小编典典

Ajax调用到MVC控制器-网址问题

ajax

我看了以前发布的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编码参考


阅读 329

收藏
2020-07-26

共1个答案

小编典典

为了使其正常工作,必须将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代码“污染”视图即可实现相同的目标。

2020-07-26