我的控制器中有一个简单的ActionResult:
public ActionResult Index(int productId)
{
return View();
}
如果我断点,我可以确认productId正在通过而且不是null。但是,如果我检查我的RouteData:
(int)RouteData.Values["productId"]
那里什么都没有。控制器有一个键,动作有一个键,但参数什么都没有?发生了什么事?
答案 0 :(得分:1)
您是否在路线的某处声明了productId
作为令牌?
routes.MapRoute(
"Default",
"{controller}/{action}/{productId}",
new { controller = "Home", action = "Index", productId = UrlParameter.Optional }
);
如果您不希望在RouteData
集合中找到它。此集合仅包含在路由中声明的标记。
默认路由使用id
(由Visual Studio向导生成的路由),因此您可以重命名操作参数:
public ActionResult Index(int id)
{
return View();
}
例如,在ProductsController
中完全有意义。现在,您将在RouteData.Values["id"]
中找到它。