将参数传递给Index视图
本文关键字:视图 Index 参数传递 | 更新日期: 2023-09-27 18:09:34
非常基本的问题。当我试图查看
时,为什么会出现404错误?/供应商/123
但是如果我点击
我可以看到页面/供应商/索引/123
有什么办法让我用第一种方式工作吗?我只是使用在Global.asax中注册的默认路由。
因为默认路由就是这样定义的。如果你不想指定一个动作名,你可以这样修改它:
routes.MapRoute(
"Default",
"{controller}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这就是说你可能不应该这样做,因为现在在你的路由中,你无法指定你希望在给定控制器上调用的动作名称,这意味着你只能在每个控制器上有一个动作,该动作将是Index。另一方面,如果你想在某些特定的控制器上这样做,你仍然可以保留默认路由并添加另一个:
routes.MapRoute(
"Vendors",
"vendors/{id}",
new { controller = "Vendors", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
因为在您的基本路由{id}
期望在动作名称之后,但您试图将其放在控制器名称之后。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
更改您的路由以在{controller}
之后接受{id}
。就像@Darin描述的那样