更改 url asp.net mvc 5
Change url asp.net mvc 5
routes.MapRoute(
name: "MyRoute",
url: "{Product}/{name}-{id}",
defaults: new { controller = "Home", action = "Product", name = UrlParameter.Optional , id = UrlParameter.Optional }
);
我的路线图,我希望我的 url 在产品操作中像 = http://localhost:13804/Wares/Product/name-id
定义路由模式时,令牌{
和}
用于指示操作方法的参数。由于您的操作方法中没有名为 Product 的参数,因此在路由模板中使用 {Product}
没有意义。
因为你想要 url 像 yourSiteName/Ware/Product/name-id
其中 name
和 id
是动态参数值,你应该添加静态部分 (/Ware/Product/
)路线模板。
这应该有效。
routes.MapRoute(
name: "MyRoute",
url: "Ware/Product/{name}-{id}",
defaults: new { controller = "Ware", action = "Product",
name = UrlParameter.Optional, id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
假设您的产品操作方法接受这两个参数
public class WareController : Controller
{
public ActionResult Product(string name, int id)
{
return Content("received name : " + name +",id:"+ id);
}
}
您现在可以使用 Html.ActionLink 帮助程序使用上述模式生成 urls
@Html.ActionLink("test", "Product", "Ware", new { id = 55, name = "some" }, null)
我知道已经晚了,但您可以在 MVC5 中使用 built-in 属性路由。希望它能帮助别人。您不需要使用
routes.MapRoute(
name: "MyRoute",
url: "{Product}/{name}-{id}",
defaults: new { controller = "Home", action = "Product", name = UrlParameter.Optional , id = UrlParameter.Optional }
);
您可以使用下面的方法。
首先在RouteConfig.cs
中启用属性路由
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
}
然后在 WaresController
[Route("Wares/Product/{name}/{id}")]
public ActionResult Product(string name,int id)
{
return View();
}
然后在View.cshtml文件
中导航编写这样的代码
<a href="@Url.Action("Product","Wares",new { name="productname",id="5"})">Navigate</a>
完成上述步骤后,您的 URL 将如下所示
http://localhost:13804/Wares/Product/productname/5
routes.MapRoute(
name: "MyRoute",
url: "{Product}/{name}-{id}",
defaults: new { controller = "Home", action = "Product", name = UrlParameter.Optional , id = UrlParameter.Optional }
);
我的路线图,我希望我的 url 在产品操作中像 = http://localhost:13804/Wares/Product/name-id
定义路由模式时,令牌{
和}
用于指示操作方法的参数。由于您的操作方法中没有名为 Product 的参数,因此在路由模板中使用 {Product}
没有意义。
因为你想要 url 像 yourSiteName/Ware/Product/name-id
其中 name
和 id
是动态参数值,你应该添加静态部分 (/Ware/Product/
)路线模板。
这应该有效。
routes.MapRoute(
name: "MyRoute",
url: "Ware/Product/{name}-{id}",
defaults: new { controller = "Ware", action = "Product",
name = UrlParameter.Optional, id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
假设您的产品操作方法接受这两个参数
public class WareController : Controller
{
public ActionResult Product(string name, int id)
{
return Content("received name : " + name +",id:"+ id);
}
}
您现在可以使用 Html.ActionLink 帮助程序使用上述模式生成 urls
@Html.ActionLink("test", "Product", "Ware", new { id = 55, name = "some" }, null)
我知道已经晚了,但您可以在 MVC5 中使用 built-in 属性路由。希望它能帮助别人。您不需要使用
routes.MapRoute(
name: "MyRoute",
url: "{Product}/{name}-{id}",
defaults: new { controller = "Home", action = "Product", name = UrlParameter.Optional , id = UrlParameter.Optional }
);
您可以使用下面的方法。
首先在RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
}
然后在 WaresController
[Route("Wares/Product/{name}/{id}")]
public ActionResult Product(string name,int id)
{
return View();
}
然后在View.cshtml文件
中导航编写这样的代码<a href="@Url.Action("Product","Wares",new { name="productname",id="5"})">Navigate</a>
完成上述步骤后,您的 URL 将如下所示 http://localhost:13804/Wares/Product/productname/5