我收到此错误“在路径集合中找不到名为'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 });
为什么找不到路线名?
答案 0 :(得分:8)
来发现这是由MVC 4引起的,并且所有自定义路由都位于RouteConfig.cs文件中的App_Start文件夹中。当我打开Global.asax.cs时,没有RegisterRoutes方法,所以我自己添加了它并添加了我的自定义路由,但它没有用。找到RouteConfig文件,它已经存在,RegisterRoutes方法已经设置了默认值。在那里添加了我的自定义路线,它按预期工作。
答案 1 :(得分:0)
当我第一次学习MVC时,我会尝试测试[HttpGet]动作,有时会得到这个。当我搜索错误消息时,没有任何帮助。
然后才意识到错误消息中缺少POST路由,并且我还没有在控制器中创建[HttpPost]操作,只有[HttpGet]操作。
我希望这对某人有帮助。