我正在尝试完成以下操作并收到#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());
}
我的路由配置具有默认路由设置,我尝试添加其他路由但无济于事。
routes.MapRoute(
name: "Customer",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Customer", action = "Index", id = UrlParameter.Optional }
);
我已经排除了设置新路线的尝试,因为它不起作用。
您的路由将规范化为 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" }
);
这些更具体的路由应位于默认路由之前。
默认路由之前添加此路由
routes.MapRoute(
name: "Customer",
url: "Customers/{id}",
defaults: new { controller = "Customer", action = "Index", id = UrlParameter.Optional }
);
请注意,URL 以"客户"开头,而不是"客户"。
您想要的URL将是:domain.com/Customers/1
而不是domain.com/Customer/1