Url.Action 找不到控制器
Url.Action can't find controller
我有一个 Html 帮助程序,它定义了一个用于提供 jquery-ui 自动完成功能的文本框。
@Html.TextBox("txtSearchArg")
javascript 在 /Scripts 文件夹中。
$("#txtSearchArg").autocomplete({
source: function (request, response) {
var clinician = new Array();
$.ajax({
cache: false,
type: "POST",
url: '@(Url.Action("Autocomplete", "Home"))'
data: { "term": request.term },
success: function (data) {
alert("in success");
response(clinician);
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
}
});
我正在使用@Url.Action方法
在我的 HomeController 中,我有一个自动完成方法。
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Autocomplete(string term)
{
... JSON gets created here
return Json(result3, JsonRequestBehavior.AllowGet);
}
当我像上面的代码一样将 url 参数传递给我的 $.ajax 方法时,响应是 404,未找到。在调试中,动态 js 显示为 "url: '/Home/Autocomplete'"。但是当我这样传递它时(从动态 js 复制):
url: '/Home/Autocomplete'
它发现 HomeController 自动完成方法很好。
如何使用 Url.Action 方法以便它找到 HomeController 和自动完成方法?
您不能在 javascript 文件中使用 Razor 语法。您需要将代码移动到视图中,以便正确呈现它。
一个可能的解决方案可能是这样的:
在您看来(例如 .cshtml 文件):
<script>
var autoCompleteUrl = '@(Url.Action("Autocomplete", "Home"))';
</script>
然后在你的js中替换:
$("#txtSearchArg").autocomplete({
source: function (request, response) {
var clinician = new Array();
$.ajax({
cache: false,
type: "POST",
url: autoCompleteUrl
data: { "term": request.term },
success: function (data) {
alert("in success");
response(clinician);
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
}
});
我有一个 Html 帮助程序,它定义了一个用于提供 jquery-ui 自动完成功能的文本框。
@Html.TextBox("txtSearchArg")
javascript 在 /Scripts 文件夹中。
$("#txtSearchArg").autocomplete({
source: function (request, response) {
var clinician = new Array();
$.ajax({
cache: false,
type: "POST",
url: '@(Url.Action("Autocomplete", "Home"))'
data: { "term": request.term },
success: function (data) {
alert("in success");
response(clinician);
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
}
});
我正在使用@Url.Action方法 在我的 HomeController 中,我有一个自动完成方法。
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Autocomplete(string term)
{
... JSON gets created here
return Json(result3, JsonRequestBehavior.AllowGet);
}
当我像上面的代码一样将 url 参数传递给我的 $.ajax 方法时,响应是 404,未找到。在调试中,动态 js 显示为 "url: '/Home/Autocomplete'"。但是当我这样传递它时(从动态 js 复制):
url: '/Home/Autocomplete'
它发现 HomeController 自动完成方法很好。
如何使用 Url.Action 方法以便它找到 HomeController 和自动完成方法?
您不能在 javascript 文件中使用 Razor 语法。您需要将代码移动到视图中,以便正确呈现它。
一个可能的解决方案可能是这样的:
在您看来(例如 .cshtml 文件):
<script>
var autoCompleteUrl = '@(Url.Action("Autocomplete", "Home"))';
</script>
然后在你的js中替换:
$("#txtSearchArg").autocomplete({
source: function (request, response) {
var clinician = new Array();
$.ajax({
cache: false,
type: "POST",
url: autoCompleteUrl
data: { "term": request.term },
success: function (data) {
alert("in success");
response(clinician);
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
}
});