而不是隻有{controller}/{action}/{id}
有可能有多個參數,如 {controller}/{action}/{id}/{another id}
?MVC 4:多控制器動作參數
我是新來的MVC(來自普通的網頁)。如果不可能,MVC是否提供了類似於網頁中可用的UrlData
的幫助方法?
而不是隻有{controller}/{action}/{id}
有可能有多個參數,如 {controller}/{action}/{id}/{another id}
?MVC 4:多控制器動作參數
我是新來的MVC(來自普通的網頁)。如果不可能,MVC是否提供了類似於網頁中可用的UrlData
的幫助方法?
你只需要映射新的路線在Global.asax的,就像這樣:
routes.MapRoute(
"NewRoute", // Route name
"{controller}/{action}/{id}/{another_id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional, another_id = UrlParameter.Optional } // Parameter defaults
);
然後在您的控制器的動作,你可以拿起參數如下:
public ActionResult MyAction(string id, string another_id)
{
// ...
}
是的,您可以在路線中定義多個參數。您需要首先在您的Global.asax文件中定義您的路線。您可以在URL段中或URL段的一部分中定義參數。要使用你的榜樣,你可以定義爲
{controller}/{action}/{id1}/{id2}
的MVC架構的路線,然後將解析匹配的路由提取ID1和ID2段和它們在你的操作方法分配給相應的變量:
public class MyController : Controller
{
public ActionResult Index(string id1, string id2)
{
//..
}
}
或者,您也可以接受來自查詢字符串或表單變量的輸入參數。例如:
MyController/Index/5?id2=10
路由進行了更詳細的討論here
你應該是第一個ID添加到您的動作方法的參數列表:公衆的ActionResult MyAction(串號,串another_id)以便讓IDS被使用示例操作。 – Tommy 2012-04-12 03:44:39
@Tommy謝謝,已更新 – McGarnagle 2012-04-12 03:45:47
我一直試圖在IIS Express和完整的IIS 7上進行此操作,但得到第二個參數的錯誤404.0。我嘗試閱讀http://www.asp.net/mvc/tutorials/older-versions/deployment/using-asp-net-mvc-with-different-versions-of-iis-cs,但沒有任何幫助。有什麼建議麼? – DavidHyogo 2013-02-12 02:47:37