可以有多个参数,而不仅仅是{controller}/{action}/{id}
{controller}/{action}/{id}/{another id}
?
我是MVC的新手(来自普通的网页)。如果不可能,MVC是否提供了一个帮助方法,如网页中的UrlData
可用?
答案 0 :(得分:4)
您只需要在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)
{
// ...
}
答案 1 :(得分:3)
是的,您可以在路线中定义多个参数。您需要先在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