Маршруты MVC Проблема - PullRequest
       7

Маршруты MVC Проблема

0 голосов
/ 06 декабря 2009

Я читаю много постов и не вижу своей мистики.

Может ли какое-нибудь тело помочь мне, пожалуйста.

Вот мой 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

если я попытаюсь вызвать URL-адрес напрямую, как http://localhost:8458/Account/EditProfile/cboivin

не работает, чтобы ...

В моем AccountController есть мой метод

 public ActionResult EditProfile(string username)
        {

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

Я не знаю, где моя ошибка. Может ли какое-то тело помочь мне? Спасибо.

Ответы [ 2 ]

6 голосов
/ 06 декабря 2009

Маршруты читаются сверху вниз, ваш общий маршрут "поймать все" должен быть последним.

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
        );
0 голосов
/ 06 декабря 2009

Попробуйте удалить:

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

И помните, что более общие маршруты должны быть внизу таблицы маршрутизации, в то время как более конкретные маршруты должны идти сверху.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...