Area
我的项目中有这个简单的用户MVC 4
。
public class UserAreaRegistration : AreaRegistration
{
public override string AreaName { get { return "User"; } }
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute("User_Constraint",
"{userName}/{controller}/{action}/{id}",
new { userName = string.Empty, controller = "Products", action = "Index", id = UrlParameter.Optional },
new { userName = new UserNameRouteConstraint() },
new[] { "T2b.Web.Areas.User.Controllers" }
);
}
}
为了确保用户名存在,我有一个RouteConstraint
叫UserNameRouteConstraint()
所有这一切都是在我的用户表中进行简单的查找,如果找到了用户,则返回 true。
到目前为止一切顺利,这个结构工作正常!
现在; 我在用户Area
中的视图具有以下代码行
@Html.ActionLink("More information", "details", new {id = product.Guid})
这条单行导致UserNameRouteConstraint()
被调用....
怎么和为什么!?如果我用简单的方式编写链接HTML
(参见下面的示例),它会很好地工作,但我想MVC
尽可能接近原则。
<a href="/username/Products/details/@product.Guid">More information</a>
有什么办法可以阻止RouteConstraint
通话吗?