jQuery/ASP.Net MVC 将 id 变量传递给 content.load

jQuery/ASP.Net MVC passing id variable to content.load

这可能是一个相当简单的问题。

如何通过:

var ident = $(this).attr("id");

content.load("@Html.Raw(Url.Action("Action", "Controller", new {id=ident}))");

我试过:

... new {id="+ident+"}))"); 但它不起作用。

解决方案

对于我的具体问题,我找到的最佳解决方案如下:

var ident = $(this).attr("id");
var route = "@Html.Raw(Url.Action("Action", "Controller"))";
var url = addParameterToURL(route, ident);
content.load(url);

使用方法:

function addParameterToURL(url, param) {
    _url = url;
    _url += (_url.split('/')[1] ? '/' : '/') + param;
    return _url;
}

请感受这里服务器端代码和客户端代码的区别。这个:

var ident = $(this).attr("id");

是javascript,是在客户端页面执行的。虽然这样:

"@Html.Raw(Url.Action("Action", "Controller"))"

是服务器端代码,在页面到达客户端之前在服务器端执行。您根本不能将两者与连接之类的东西混在一起。

最简单的方法是将服务器端执行的结果存储到某个变量中,然后向其添加一个参数。像这样存储:

var url = "@Html.Raw(Url.Action("Action", "Controller"))";

然后,在JS中,给它加一个参数。例如使用 this function(只要确保将 url 作为参数,而不是使用当前位置)。