jQuery/ASP.Net MVC将id变量传递给content.load
这可能是一个相当简单的问题 我如何通过:jQuery/ASP.Net MVC将id变量传递给content.load,jquery,asp.net,asp.net-mvc,url.action,Jquery,Asp.net,Asp.net Mvc,Url.action,这可能是一个相当简单的问题 我如何通过: var ident=$(this.attr(“id”) 到 content.load(@Html.Raw(Url.Action(“Action”,“Controller”,new{id=ident})) 我试过: 。。。新建{id=“+ident+”}));但它不起作用 解决方案 对于我的具体问题,我找到的最佳解决方案如下: var ident = $(this).attr("id"); var route = "@Html
var ident=$(this.attr(“id”)代码>
到
content.load(@Html.Raw(Url.Action(“Action”,“Controller”,new{id=ident}))代码>
我试过:
。。。新建{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中,向其添加一个参数.我需要将id传递给控制器中的action方法以获得正确的结果。如果我可以指定字符串文本action
和controller
是否真的无法传递参数?is“@Html.Raw(Url.action(“action”,“controller”,new{id=ident}))“
基本上不是字符串?或者是否有更好的方法调用控制器的方法,以便将部分视图呈现给引导模式?我建议的方法将id传递给控制器。它只会给你这样一个URL:/Controller/Action?id=123
,这正是你需要将123作为id传递给Action的地方。@LeighCooper,不是,因为Razor识别它,并在呈现视图时将其呈现为正确的URL字符串。谢谢,我会尝试一下。