无法在路径集合中查找路径名称

时间:2012-06-23 23:53:17

标签: asp.net-mvc asp.net-mvc-routing

我收到此错误“在路径集合中找不到名为'MemberRoute'的路径。参数名称:name”。这是我的Global.asax,

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            "MemberRoute",                       // routeName
            "member/{userId}/{pseudoName}", // url
            new
            {                           // url defaults
                controller = "Member",
                action = "Index",
                userId = 0,
                pseudoName = UrlParameter.Optional
            },
            new
            {                          // url constraints
                userId = @"\d+" // must match url {userId}
            }
        );
    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

MemberController,

public ActionResult Index(int userId, string pseudoName)
    {
        User user;
        var unitOfWork = new UnitOfWork();
        user = unitOfWork.UserRepository.GetById(userId);

        var expectedName = user.PseudoName.ToSeoUrl();
        var actualName = (pseudoName ?? "").ToLower();

        // permanently redirect to the correct URL
        if (expectedName != actualName)
            return RedirectToActionPermanent("Index", "Member", new { id = user.UserId, pseudoName = expectedName });
        return View(user);
    }

来电者,

return RedirectToRoute("MemberRoute", new { userId = user.UserId, pseudoName = user.PseudoName });

为什么找不到路线名?

2 个答案:

答案 0 :(得分:8)

来发现这是由MVC 4引起的,并且所有自定义路由都位于RouteConfig.cs文件中的App_Start文件夹中。当我打开Global.asax.cs时,没有RegisterRoutes方法,所以我自己添加了它并添加了我的自定义路由,但它没有用。找到RouteConfig文件,它已经存在,RegisterRoutes方法已经设置了默认值。在那里添加了我的自定义路线,它按预期工作。

答案 1 :(得分:0)

当我第一次学习MVC时,我会尝试测试[HttpGet]动作,有时会得到这个。当我搜索错误消息时,没有任何帮助。

然后才意识到错误消息中缺少POST路由,并且我还没有在控制器中创建[HttpPost]操作,只有[HttpGet]操作。

我希望这对某人有帮助。