在我的MVC網站中,我想讓我的路線設置如下:無法路由到「{controller}/{action}/{id}」和「{controller}/{id}」
site.com/Customer
- 您可以在這裏選擇一個客戶。site.com/Customer/123
- 您可以在其中看到所選客戶的信息。
所以基本上,只有一個視圖,如果你有一個{id}
顯示不同的東西。
所以我添加映射路徑DefaultNoAction
在RouteConfig.cs
:
// Route definitions.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "DefaultNoAction",
url: "{controller}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Parameters2",
url: "{controller}/{action}/{id1}/{id2}",
defaults: new { controller = "Home", action = "Index", id1 = UrlParameter.Optional, id2 = UrlParameter.Optional }
);
並在控制器中執行以下:
public ActionResult Index(int? id)
{
return View(id);
}
和視圖:
@model int?
...
$(function() {
var customerId = @Model;
...
}
現在:
- ,如果我嘗試訪問
site.com/Customer/123
我會得到一個404 - 如果我去
site.com/Customer
的@Model
沒有設置任何東西,所以當我引用它在我的jQuery它拋出一個語法錯誤,因爲它會看到var customerId = ;
很明顯,我沒有接近這個正確的方式或有更好的方式來做我想做的事情。任何方向?
只是一個快速檢查 - 您是否刪除了「{controller}/{action}/{id}'的默認路由? – Max
是默認路由之前的路由(該命令很重要) –
請求將完整的RouteConfig.cs放在此處可以嗎?你一定可以去屬性路由。 –