Asp.net mvc 3 使用不带路由值的Url.Action会截断Url
我有一个网站大量使用AJAX,为了将URL等内容保存在一个合理的位置,我将在页面上的脚本块中输出所需的URL,然后在以后的Javascript文件中使用它们 这方面的一个例子是: 在Index.cshtml中 问题是生成的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中剔
/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: ...
});
});
});