如何使用Url.Action传递多个参数给Route
How to use Url.Action to pass multiple Parameters to Route
我刚刚在学习 MVC 并正在尝试创建一个 SEO 页面标题,因此我发送了一个控制器 ID,同时也发送了 SEO 页面 slug。
我想看Recipe/Details/18/foobar
但是下面的代码returns
Results/Name/18?name=foobar
我认为这是我的自定义路线的问题,但从所有 mt Research 来看,我认为我做的是正确的。感谢任何帮助。
_PartialView
<a href="@Url.Action("Details", "Recipe", new {id = Recipe.ID, name = Recipe.Slug}, null)">
路由配置
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Recipe",
url: "{controller}/{action}/{id}/{name}",
defaults: new {
controller = "Recipe",
action = "Details",
id = UrlParameter.Optional,
name = UrlParameter.Optional
}
);
控制器
public ActionResult Details(int id)
您应该在默认路线之前添加您的自定义路线。它们按顺序处理,因此在您的情况下,mvc 使用默认路由。
此致,
米海尔
我刚刚在学习 MVC 并正在尝试创建一个 SEO 页面标题,因此我发送了一个控制器 ID,同时也发送了 SEO 页面 slug。
我想看Recipe/Details/18/foobar
但是下面的代码returns
Results/Name/18?name=foobar
我认为这是我的自定义路线的问题,但从所有 mt Research 来看,我认为我做的是正确的。感谢任何帮助。
_PartialView
<a href="@Url.Action("Details", "Recipe", new {id = Recipe.ID, name = Recipe.Slug}, null)">
路由配置
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Recipe",
url: "{controller}/{action}/{id}/{name}",
defaults: new {
controller = "Recipe",
action = "Details",
id = UrlParameter.Optional,
name = UrlParameter.Optional
}
);
控制器
public ActionResult Details(int id)
您应该在默认路线之前添加您的自定义路线。它们按顺序处理,因此在您的情况下,mvc 使用默认路由。
此致, 米海尔