我在家庭 Controller 中创建了两个具有不同名称的操作方法
public ActionResult Default()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View("index");
}
public ActionResult Index(int a)
{
ViewData["Message"] = "Welcome to ASP.NET MVC! and Your Age is " + a;
return View();
}
我的路由代码如下:
routes.MapRoute(
"Default1", // Route name
"{Home}/{ID}", // URL with parameters
new { controller = "Home", action = "Index", id =UrlParameter.Optional});
routes.MapRoute(
"Default2", // Route name
"{Home}", // URL with parameters
new { controller = "Home", action = "Default" }
);
routes.MapRoute(
"Default", // Route name
"{controller}", // URL with parameters
new { controller = "Home", action = "Default" }
);
还是有问题
当我输入像 http://localhost:7221 这样的 URL 时 然后回家并调用 Default() 方法,但如果我键入 URL,如
http://localhost:7221/Home 然后出现错误。为了处理这种情况,我定义了这样的路线
routes.MapRoute(
"Default2", // Route name
"{Home}", // URL with parameters
new { controller = "Home", action = "Default" }
);
但是它不起作用.......你能告诉我为什么吗。
如果我输入像 http://localhost:7221/Home/88 这样的 URL 然后应该调用 Index(int a) 方法但出现错误。为什么
当我输入 URL http://localhost:7221 时,我想要它 或 http://localhost:7221/Home 然后应该调用 Default() 以及我何时输入
http://localhost:7221/Home/88 那么应该调用 Index(int a) 。我的路线有什么问题?我该如何纠正它?如果可能的话,纠正我的路线代码。谢谢
最佳答案
这个规则实际上应该涵盖你需要的一切:
routes.MapRoute(
"Default",
"{controller}/{action}/{a}",
new {
controller = "Home",
action = "Index",
a = UrlParameter.Optional
}
);
注意以下几点:
参数名称需要与方法上的参数匹配,您有
id
和a
- 因此框架无法匹配它们。在上面的规则中,我在映射规则中放了a
来匹配你的方法,但是你应该在这两个地方给它起一个更好的名字。如果未提供 Controller 或操作,则此规则默认为/Home/Index。如果你想点击你命名为
Default
的 Action ,你会去/Home/Default如果您提供/Home/Index/21,它将调用 Index 方法 - 但如果您不提供年龄,它将出现问题,因为您没有方法来匹配规则。您需要添加方法
public ActionResult Index()
或使用默认值public ActionResult Index(int a = 0)
以下是一些不符合此规则的 URL 示例。
http://yourapp/
- 将转到/Home/Indexhttp://yourapp/Home
- 将转到/Home/Indexhttp://yourapp/Home/Default
- 将转到/Home/Defaulthttp://yourapp/Home/Index
- 看我上面的注释 - 你需要一个方法来支持它http://yourapp/Home/Index/21
- 将转到/Home/Index 并将a
作为 21 传递
关于asp.net-mvc - ASP.Net MVC 路由问题 url 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11841483/