首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由MVC问题

路由MVC问题
EN

Stack Overflow用户
提问于 2009-12-06 23:46:03
回答 2查看 102关注 0票数 0

我读了很多帖子,但我没有看到我的赌注。

有人能帮帮我吗?

这就是我的global.asax

代码语言:javascript
复制
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);
        }

当我使用

代码语言:javascript
复制
<%= 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中有我的方法

代码语言:javascript
复制
 public ActionResult EditProfile(string username)
        {

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

我不知道我哪里错了。有人能帮帮我吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-06 23:48:35

路线是从上往下读的,你的“捕获所有”一般路线需要排在最后。

代码语言:javascript
复制
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
        );
票数 6
EN

Stack Overflow用户

发布于 2009-12-06 23:55:04

尝试删除:

代码语言:javascript
复制
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

记住,更多的一般路由应该放在路由表的底部,而更具体的路由应该放在顶部。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1855727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档