而不是只有{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