url.Action,参数从何而来



我在视图中具有此JavaScript代码:

function getUrl(id) {
    var url = "@Url.Action("Product", "Product")/" + id;
    return url;
}

这是路由配置:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
    name: "localized",
    url: "{culture}/{controller}/{action}/{id}/{title}",
    defaults: new { culture = "en", controller = "Home", action = "Index",
         id = UrlParameter.Optional, title = UrlParameter.Optional},
    constraints: new { culture = "en|fa" }
            );

我期望从URL.Action("产品","产品")返回/en/Product/Product/,但我得到的是/en/Product/Product/92和92是当前产品的ID,我正在尝试创建URL下一个产品。由于这个答案的替换技巧,我可以找到解决方法,但是现在我只想知道为什么会发生这种情况。

Url.Action如果不指定当前路由值。

试试这个

@Url.Action("Product", "Product", new { id = UrlParameter.Optional })/" + id;

,或者您可以将id设置为Url.Action调用中的null以清除它,然后将ID附加到末端。

ID默认情况下将在URL中传递。您可以使用此行传递的任何ID创建URL

var url = "@Url.Action("Product", "Product")/" + id;

如果您在URL中获取当前ID,那么这就是您传递给该方法的方法。如果您想在没有ID的情况下获取URL,则只需删除该部分

var url = "@Url.Action("Product", "Product")";

您链接的替换对于将信息从脚本传递到您正在调用的操作非常有用。组合MVC和JavaScript

的好方法

最新更新