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()
これはすべて、usersテーブルでの単純なルックアップであり、ユーザーが見つかった場合はtrueを返します。
これまでのところ、この構造は問題なく機能します。
今; ユーザーの私のビューにArea
は、次のコード行があります
@Html.ActionLink("More information", "details", new {id = product.Guid})
この1行で、UserNameRouteConstraint()
が呼び出されます。
方法と理由!?リンクをわかりやすく書くとHTML
(以下の例を参照)、うまく機能しますが、MVC
原則をできるだけ忠実に守りたいと思います。
<a href="/username/Products/details/@product.Guid">More information</a>
RouteConstraint
通話を防ぐ方法はありますか?