我正在考虑简化我的MVC控制器操作。
有关所有GET操作是否应使用RouteData.Values而不是参数获取其值的任何想法?
答案 0 :(得分:3)
如果正确设置路线,则无需使用RoutaData.Values,默认模型绑定器会为您执行此操作。看看global.asax的默认路由:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);
所以你可以创建一个这样的动作:
public ActionResult SomeAction(int id) {
// in case of url '/MyController/SomeAction/1' id == 1
}
你根本不需要使用RoutaData.Values,你只需要正确设置你的路线。为什么你想在地球上使用这样的东西:(?!)
public ActionResult SomeAction() {
int id;
if(int.TryParse(RoutaData.Values["id"] + "", out id))
{
// ...
}
}
反对这种“模式”的其他论据: