我刚将所有jQuery POST
移动到外部文件。因此,我将Url.Action
更改为实际网址:
$(".performance-box").click(function () {
$.ajax({
url: '/Home/Performance',
type: 'POST',
success: function (data) {
if (data) {
// Unrelated Stuff
}
}
});
})
此URL在服务器上不起作用,因为它是相对路径,对吗?
因此,我将其更改为~/Home/Performance
,但现在无法在本地使用。
有关如何在外部文件中处理此问题的任何指导都会有所帮助。
答案 0 :(得分:1)
将Url.Action(“controller”,“action”)存储在视图中的全局js变量中,然后在外部JS中使用它,这就是我要做的。 由于您可能在默认网站中本地托管您的网站,而生产中并非如此。使用网址操作可确保您拥有正确的网址。
<script>
$(document).ready(function () {
init();
});
function init() {
url = '@Url.Action("Controller", "Action")'
}
</script>
外部JS
$(".performance-box").click(function () {
$.ajax({
url: url,
type: 'POST',
success: function (data) {
if (data) {
// Unrelated Stuff
}
}
});
答案 1 :(得分:1)
只要您的路由在MVC中正确配置,您就应该能够使用没有波浪号(〜)的路由。
C#
//controller class attributes
[RouteArea("admin")]
[RoutePrefix("users")]
//method
[HttpGet, Route("autocomplete", Name = "Admin_Users_AutoComplete")]
public JsonResult Autocomplete(string q)
{
//do autocomplete
}
Jquery的:
ajax: {
url: "/admin/users/autocomplete",
dataType: 'json',
type: 'POST',
cache: true
}