我在我的应用程序中使用asp.net mvc 4,knockout-js。 我想问一下如何从js文件调用控制器?
当我将此代码写入视图(razor)页面时,它可以工作:
<script type="text/javascript">
$(document).ready(function () {
var url = '@Url.Action("GetTechnicians", "Ticket")';
$.post(url, null, function (data) {
alert("get data");
});
});
</script>
现在我想在* .js文件中进行调用。
问题是Url.Action
在js文件中无效。
我在global.asax中的网址映射是:"{culture}/{controller}/{action}/{id}",
我的控制器的签名如下:public JsonResult GetTechnicians()
当我在js文件中使用时:
var url = "/Ticket/Technicians";
我收到错误:"NetworkError: 404 Not Found - http://localhost/Ticket/Technicians"
我想知道如何从js文件中完成调用?
答案 0 :(得分:1)
您可以执行以下操作...
在您的JS文件中
var app = {
urls: {
getTechnicians: null
},
culture: "en",
getTechnicians: function () {
if (!app.urls.getTechnicians) {
throw new Error("getTechnicians URL not set");
}
$.post("/" + app.culture + app.urls.getTechnicians, null, function (data) {
alert("get data");
});
}
};
在你看来
<script type="text/javascript" src="myscriptfile.js"></script>
<script type="text/javascript">
$(document).ready(function () {
app.urls.getTechnicians = '@Url.Action("GetTechnicians", "Ticket")';
app.culture = "en-us";
// Later on...
app.getTechnicians();
});
</script>