ActionLink 在 URL 中显示参数而不是查询字符串 mvc
ActionLink to show parameters in URL instead of querystring mvc
我需要这个 url http://localhost:53249/Admin/EditPosts/1/Edit
但不幸的是我在 url 中得到这样的查询字符串 http://localhost:53249/Admin/EditPosts?id=1&operation=Edit
这是我的操作链接(锚标签)
<td>@Html.ActionLink(@posts.Title, "EditPosts", "Admin", new { id = posts.id, operation="Detail" }, null)</td>
这是我的路由配置:
public static void RegisterRoutes(RouteCollection routes)
{
//routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Admin",
url: "Admin/EditPosts/{id}/{operation}",
defaults: new { controller = "Admin", action = "EditPosts"}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
在这种情况下,您混合了操作和操作。
我建议您这样使用 url:
http://localhost:53249/Admin/Posts/1/Edit
因为您已经通过这种方式为 Posts 对象指示了您的操作 Edit,并且 Edit 是动作,而不是操作,遵循标准 REST。
要使用 url 建议您必须将 MapRoute 更改为:
routes.MapRoute(
name: "Admin",
url: "Admin/Posts/{id}/{action}",
defaults: new { controller = "Posts", action = "Details" } //Details action by default
);
我需要这个 url http://localhost:53249/Admin/EditPosts/1/Edit
但不幸的是我在 url 中得到这样的查询字符串 http://localhost:53249/Admin/EditPosts?id=1&operation=Edit
这是我的操作链接(锚标签)
<td>@Html.ActionLink(@posts.Title, "EditPosts", "Admin", new { id = posts.id, operation="Detail" }, null)</td>
这是我的路由配置:
public static void RegisterRoutes(RouteCollection routes)
{
//routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Admin",
url: "Admin/EditPosts/{id}/{operation}",
defaults: new { controller = "Admin", action = "EditPosts"}
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
在这种情况下,您混合了操作和操作。
我建议您这样使用 url:
http://localhost:53249/Admin/Posts/1/Edit
因为您已经通过这种方式为 Posts 对象指示了您的操作 Edit,并且 Edit 是动作,而不是操作,遵循标准 REST。
要使用 url 建议您必须将 MapRoute 更改为:
routes.MapRoute(
name: "Admin",
url: "Admin/Posts/{id}/{action}",
defaults: new { controller = "Posts", action = "Details" } //Details action by default
);