学习了mvc有一段时间了,本以为直接可以通过request对象直接获取路由参数呢,后来实验了一下发现想错了,mvc有专门获取路由参数的方式,在不同的地方,获取路由参数的方式也不一样,这里分别说一下,在controller,非controller的类里面,和view里如何获取路由参数:
1.在controller里获取路由参数:
var controller = RouteData.Values["controller"];//action,id或其他路由参数同理
这种方式很常用,还有一种方式就是,直接在action上定义参数,通过模型绑定的方式获取:
public ActionResult Index(string controller,string action)
{//这种方式也可以获取
return View();
}
2.在view中获取:
<input type="text" value="@Html.ViewContext.RouteData.Values["controller"]" />
在视图中可以通过viewcontext,视图上下文,找到RouteData。
3.在非controller的类中:
HttpContext.Current.Request.RequestContext.RouteData.Values["controller"]
通过request获取requestcontext来获取routedata.