Asp.net mvc 3 使用不带路由值的Url.Action会截断Url

Asp.net mvc 3 使用不带路由值的Url.Action会截断Url,asp.net-mvc-3,urlhelper,Asp.net Mvc 3,Urlhelper,我有一个网站大量使用AJAX,为了将URL等内容保存在一个合理的位置,我将在页面上的脚本块中输出所需的URL,然后在以后的Javascript文件中使用它们 这方面的一个例子是: 在Index.cshtml中 问题是生成的Url是这样创建的-/frontoffice,注意它不包括索引操作。这是因为当它被生成时,我们给它一个空的id,所以当我们使用它时,所请求的Url实际上是/frontoffice/55',而不是/frontoffice/index/55' UrlHelper似乎正在从url中剔

我有一个网站大量使用AJAX,为了将URL等内容保存在一个合理的位置,我将在页面上的脚本块中输出所需的URL,然后在以后的Javascript文件中使用它们

这方面的一个例子是:

在Index.cshtml中

问题是生成的Url是这样创建的-
/frontoffice
,注意它不包括
索引
操作。这是因为当它被生成时,我们给它一个空的
id
,所以当我们使用它时,所请求的Url实际上是
/frontoffice/55',而不是
/frontoffice/index/55'

UrlHelper
似乎正在从url中剔除操作名称。我是否可以使用另一种方法不从Url中删除项目?-我希望能得到一个清晰的、可重用的解决方案,因为这种事情在整个网站上都会发生

谢谢

Kieron

在路线定义中可能需要注意这一点。您可能仍有类似的定义:

routes.MapRoute(“默认值”,“{controller}/{action}/{id}”,
新的{controller=“Home”,action=“Index”,id=urlparmeter.Optional})


例如,我可能会删除此项,或者将显式定义您正在生成的URL的内容放在默认路由定义之上。

您可以为id使用占位符

app.frontoffice.urls.index = function (id) {
    return "@Url.Action("index", "frontoffice", new { id = "000" })".replace('000', id);
}
然后在.js文件中

$(function() {
    $("myButton").click(function(e) {
        $.ajax({
            url: app.frontoffice.urls.index(55),
            success: ...
            error: ...
        });
    });
});
app.frontoffice.urls.index = function (id) {
    return "@Url.Action("index", "frontoffice", new { id = "000" })".replace('000', id);
}
$(function() {
    $("myButton").click(function(e) {
        $.ajax({
            url: app.frontoffice.urls.index(55),
            success: ...
            error: ...
        });
    });
});