roa*_*own 2 routes asp.net-mvc-4
我正在尝试完成以下操作并收到#2的"资源未找到"错误.假设因为未正确配置路由.
所需的网址:
1)domain.com/Customer
2)domain.com/Customer/1 *不起作用
3)domain.com/Customer/All
public ActionResult Index(int? id)
{
var viewModel = new CustomerViewModel();
if (!id.HasValue)
id = 1; // ToDo: Current Logged In Customer Id
viewModel.Load(id.Value);
return View(viewModel);
}
public ActionResult All()
{
return View(CustomerModel.All());
}
Run Code Online (Sandbox Code Playgroud)
我的路由配置有默认的路由设置,我尝试添加一个额外的路由无济于事.
routes.MapRoute(
name: "Customer",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Customer", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
我已经排除了我设置新路线的尝试,因为它不起作用.
您的路线将标准化为domain.com/Customer/Index/1.当您拥有路径的后续部分时,您不能仅仅因为其值将是默认值而消除之前的组件.在这种情况下,它正在寻找一个无法找到的名为"1" 的动作.
编辑:
如果您所需的路线是domain.com/Customer/ID,那么您可以将这样的路线添加到路线表:
routes.MapRoute(
name: "CustomerAll",
url: "Customer/All",
defaults: new { controller = "Customer", action = "All" }
);
routes.MapRoute(
name: "CustomerByID",
url: "Customer/{id}",
defaults: new { controller = "Customer", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)
这些更具体的路线应该在您的默认路线之前.
| 归档时间: |
|
| 查看次数: |
4150 次 |
| 最近记录: |