我看了以前发布的jQuery / MVC问题,但没有找到可行的答案。
我有以下JavaScript代码:
$.ajax({ type: "POST", url: '@Url.Action("Search","Controller")', data: "{queryString:'" + searchVal + "'}", contentType: "application/json; charset=utf-8", dataType: "html", success: function (data) { alert("here" + data.d.toString()); } });
调用网址时,帖子看起来像:
NetworkError: 500 Internal Server Error - <a href="http://localhost/Web/Navigation/@Url.Action(%22Search%22,%22Chat%22)"></a>
有人可以向我解释为什么它会这样返回它(背后的逻辑)并为我提供有效的解决方案。提前致谢! PS:其他信息:%22是<<“ >>字符的URL编码参考
为了使其正常工作,必须将Javascript置于Razor视图中,以便该行
@Url.Action("Action","Controller")
由Razor解析并替换实际值。
如果您不想将Javascript移到View中,可以查看在视图中创建一个设置对象,然后从Javascript文件中引用该对象。
例如
var MyAppUrlSettings = { MyUsefulUrl : '@Url.Action("Action","Controller")' }
并在您的.js文件中
$.ajax({ type: "POST", url: MyAppUrlSettings.MyUsefulUrl, data: "{queryString:'" + searchVal + "'}", contentType: "application/json; charset=utf-8", dataType: "html", success: function (data) { alert("here" + data.d.toString()); });
或者,也可以利用HtmlHelpers中的框架内置的Ajax方法,使您无需通过JS代码“污染”视图即可实现相同的目标。