我在视图中具有此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