質問
私はポストをたくさん読んで、私は私のmystakeを参照してくださいいけない。
いくつかの体は、私を助けてくださいことができます。
私のGlobal.asaxがあります。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute("UserName", "Account/{action}/{username}",
new { action = "EditProfile", controller = "Account" });
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
私が使用している場合
<%= Html.ActionLink("Edit Account", "EditProfile", "Account", new { username = Html.Encode(Page.User.Identity.Name) },null) %>
私が得たこのURL
ます。http:// localhostを:?8458 /アカウント/ EditProfileユーザ名= cboivinする
私のようなURLを直接呼び出そう ます。http:// localhostを:8458 /アカウント/ EditProfile / cboivinする
...に動作しません
私のAccountControllerの私の方法は、
があります public ActionResult EditProfile(string username)
{
return View(ServiceFactory.UserAccount.GetUserByUserName(new GetUserByUserNameArgs(username)));
}
私は私のミスがどこにあるか知りません。いくつかの体は私を助けることができますか?おかげます。
解決
ルートは、あなたの「キャッチすべての」一般的なルートが最後にする必要がトップダウンで読まれます。
routes.MapRoute("UserName", "Account/{action}/{username}",
new { action = "EditProfile", controller = "Account" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
他のヒント
削除してくださいます:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
より具体的なルートが一番上に来る必要がありながら、そして、より一般的なルートは、ルーティングテーブルの一番下にあるべき覚えています。
所属していません StackOverflow