[英]MVC routing with one fixed action and controllers with multiple optional parameters
基本上我有一個問題,我想在多個控制器中進行一個默認操作,並使用我的自定義URL的多個可選參數,如下所示:
www.mydomain.com/{controller name} / {v1} / {v2} / {v3} / {v4}
並且也不希望在url中使用動作名稱。 我在routeconfig.cs中有這個路由
routes.MapRoute(
name: "Blog",
url: "{controller}/{v1}/{v2}/{v3}/{v4}",
defaults: new
{
controller = "Blog",
action = "searchBlog",
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional,
v3 = UrlParameter.Optional,
v4 = UrlParameter.Optional
});
routes.MapRoute(
name: "Forum",
url: "{controller}/{v1}/{v2}/{v3}/{v4}",
defaults: new
{
controller = "Forum",
action = "searchForum",
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional,
v3 = UrlParameter.Optional,
v4 = UrlParameter.Optional
});
BlogController
動作
public ActionResult searchBlog(string v1=null,string v2 = null, string v3 = null, string v4 = null)
{
// use optional parameters here
return View("Index");
}
在ForumController
public ActionResult searchForum(string v1=null,string v2 = null, string v3 = null, string v4 = null)
{
// use optional parameters here
return View("Index");
}
我的動作用0,3和4參數命中,但在傳遞1或2參數時無法命中。
例如
www.mydomain.com/{controller name} / {v1} / {v2}
www.mydomain.com/{controller name} / {v1}
請幫助我/指導我,在我提到我的要求時,在MVC中使用路由的正確方法是什么。 我很感激你的寶貴時間。 提前致謝。
您必須通過修復每個控制器的路由來設置這樣的路由配置,否則將為上述類型的場景調用默認路由配置,路由將變為這樣。
www.mydomain.com/blog/{v1}/{v2}/{v3}/{v4}
此路由僅適用於博客控制器,因為我們已在此配置中修復了路由。
routes.MapRoute(
name: "Blog",
url: "blog/{v1}/{v2}/{v3}/{v4}",
defaults: new
{
controller = "Blog",
action = "searchBlog",
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional,
v3 = UrlParameter.Optional,
v4 = UrlParameter.Optional
});
您必須為論壇的每個控制器手動執行此操作,結果路由僅適用於論壇控制器。
www.mydomain.com/forum/{v1}/{v2}/{v3}/{v4}
routes.MapRoute(
name: "Forum",
url: "forum/{v1}/{v2}/{v3}/{v4}",
defaults: new
{
controller = "Forum",
action = "searchForum",
v1 = UrlParameter.Optional,
v2 = UrlParameter.Optional,
v3 = UrlParameter.Optional,
v4 = UrlParameter.Optional
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.