0

我在我的应用程序中使用 asp.net mvc 4, knockout-js。我想问一下如何从js文件调用控制器?

当我将此代码写入视图(剃刀)页面时,它可以工作:

<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 中的 url 映射是:"{culture}/{controller}/{action}/{id}", 我的控制器的签名看起来像: public JsonResult GetTechnicians()

当我在 js 文件中使用时:

var url = "/Ticket/Technicians";

我收到一个错误:"NetworkError: 404 Not Found - http://localhost/Ticket/Technicians"

我想知道如何完成从js文件的调用?

4

1 回答 1

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>
于 2012-08-20T20:09:13.253 回答