If I got you right.
The userID is "mhis/001", and the year is 2012, then you would like to use an URL like this:
http://localhost:59025/User/mhis/001/2012
Global.asax - define the route:
routes.MapRoute(
                "UserDetails", // Route Name
                "User/{idpart1}/{idpart2}/{year}", // URL with parameters
                new { controller = "User", action = "Details", year= UrlParameter.Optional} // Parameter defaults
            );
The "year" parameter is set as optional, so if the user type http://localhost:59025/User/mhis/001/2012, year will be 2012, if doesn't type anything, year will be null.
A dummy user class:
public class User
{
    public String Id { get; set; }
    public String Name { get; set; }
    /// <summary>
    /// just a helper to get the first part of the userID
    /// </summary>
    public string IDPart1 { get { return Id.Split('/')[0]; } }
    /// <summary>
    /// just a helper to get the second part of the userID
    /// </summary>
    public string IDPart2 { get { return Id.Split('/')[1]; } }
}
Added two helper properties to the User class take the user name apart (IDPart1, IDPart2), so it's easier to use in the view
The controller with a dummy user list:
public class UserController : Controller
{
    /// <summary>
    /// user list...
    /// </summary>
    List<User> _users = new List<User> {
        new User{ Id="mhis/001", Name="John Smith"},
        new User{ Id="mhis/002", Name="Some Body Else"}
    };    
    /// <summary>
    /// This is actually a user list, but...
    /// </summary>
    /// <returns></returns>
    public ActionResult Index()
    {
        return View(_users);
    }
    public ActionResult Details(string idpart1, string idpart2, int? year)
    {
        //do what you have to do with the year...
        ViewBag.year = year;            
        string realUserID = String.Format(@"{0}/{1}", idpart1, idpart2);
        var user = _users.FirstOrDefault(u => u.Id == realUserID);
        return View(user);
    }
}
The list view:
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>            
                @Html.ActionLink("Details", "Details", new { idpart1 = item.IDPart1, idpart2 = item.IDPart2 }) 
            </td>
        </tr>
    }
The interesting part is this: @Html.ActionLink("Details", "Details", new { idpart1 = item.IDPart1, idpart2 = item.IDPart2 }), sou you get what you want.
Details view:
    @model MvcApplication1.Controllers.User
    @{
        ViewBag.Title = "Details";
    }
    @if(Model != null) {
    <h2>Details</h2>
    <fieldset>
        <legend>User</legend>
        The year is: "@ViewBag.year"
        <div class="display-label">Name</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Name)
        </div>
    </fieldset>
    <p>@Html.ActionLink("Back to List", "Index")</p>
    } else {//this should be handled in the controller...
        <h2>User not found!</h2> 
    }