0

私はたくさんの投稿を読みましたが、自分のことはわかりません。

誰かが私を助けてくれませんか。

私の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/Account/EditProfile?username=cboivin

http://localhost:8458/Account/EditProfile/cboivinのように URL を直接呼び出そうとすると

働かない...

私のAccountControllerに私の方法があります

 public ActionResult EditProfile(string username)
        {

            return View(ServiceFactory.UserAccount.GetUserByUserName(new GetUserByUserNameArgs(username)));
        }

どこが間違っているのかわからない。誰かが私を助けることができますか?ありがとう。

4

2 に答える 2

6

ルートはトップダウンで読み取られます。「すべてをキャッチする」一般的なルートは最後にする必要があります。

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
        );
于 2009-12-06T15:48:34.503 に答える
0

削除してみてください:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

また、より一般的なルートはルーティング テーブルの一番下に配置し、より具体的なルートは一番上に配置する必要があることを忘れないでください。

于 2009-12-06T15:55:04.273 に答える