RouteUrl使用参数进行路由

RouteUrl使用参数进行路由

本文介绍了MVC 5使用@ Url.RouteUrl使用参数进行路由的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个ActionResult,已将路由属性应用于:

I have an ActionResult that I have applied a routing attribute to:

[Route("myproduct/{productID}", Name = "myproduct")]
[MvcSiteMapNode(Title = "Products", ParentKey = "products", Key = "myproducts")]
public ActionResult myproducts(int productID) ...

我正在尝试通过RouteUrl链接到视图:

I am trying to link to the view via a RouteUrl:

<a href="@Url.RouteUrl("myproducts", @Model.myproducts[i].productID)">Buy</a>

生成的html甚至不包含href:

The resulting html does not even include a href:

<a>Buy</a>

如果我删除该参数,它将起作用:

If I remove the parameter it works:

[Route("myproducts", Name = "myproducts")]
[MvcSiteMapNode(Title = "Products", ParentKey = "home", Key = "myproducts")]
public ActionResult myproducts(int productID) ...


<a href="/products/myproducts">Book</a>

我是否尝试错误地添加参数?该文档提出了我的尝试.

Am I trying to add the parameter incorrectly? The documentation suggests what I am attempting.

路由配置:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

推荐答案

尝试:

@Url.RouteUrl("myproducts", new { productID = Model.myproducts[i].productID })

并更改您的行动路线,例如:

And change your action route like:

[Route("myproducts/{productID}", Name = "myproducts")]
[MvcSiteMapNode(Title = "Products", ParentKey = "home", Key = "myproducts")]
public ActionResult myproducts(int productID) {

}

这篇关于MVC 5使用@ Url.RouteUrl使用参数进行路由的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 10:50