为什么此号召性用语不提供操作方法名称?
@Url.Action("Index","NewStore")
它只是产生......
localhost/TemplateUI/en-CA/Atomic/Wassabi/Store
我需要它来生成/索引......
答案 0 :(得分:1)
这是因为Url.Action
助手在Global.asax中使用您的路由注册。由于您将Index
作为操作名称传递,我猜您在路径注册中指定了action="Index"
的默认值,因此省略了它。
例如,如果您有以下默认路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index" }
);
}
由于controller = "Home"
和action = "Index"
约束已被指定,/
和/Home
都将是绝对等效的网址并调用Index
Home
行为控制器。
因此,当您尝试使用某些帮助程序构建网址时会发生同样的情况:它会使用您的路由。
如果您需要在网址中包含操作名称,请确保已删除路由定义中的action
约束。