【问题标题】:ASP MVC2 execute controller method in javascriptASP MVC2在javascript中执行控制器方法
【发布时间】:2017-10-03 02:29:54
【问题描述】:

在我的 ASP 应用程序中,我试图从数据库中检索一个值。从 javascript 我尝试执行控制器方法。

Javascript

function getCapital(country) {
//alert(country);
var url = "~/Home/Capital";
$.get(url, { country: country }, function (response) {
    $("#getCapital").html(response);
    alert(response);
});

控制器(家庭)

public string Capital(string country)
{
   return capitalService.getCapital("Frankrijk");
}

但我没有得到任何结果。

编辑

查看

<script type="text/javascript" src="/Scripts/jquery-1.4.1.js"></script>
<script type="text/javascript" src="/Scripts/World.js" ></script> 

这是浏览器控制台的输出。所以有时它会记录 URL 而不会出错。

【问题讨论】:

  • public ActionResult Capital(string country) { return capitalService.getCapital("Frankrijk"); }
  • @DaveClough 我无法在 ActionResult 方法中返回类型字符串。
  • 可以,ActionResult 会包装字符串

标签: javascript asp.net model-view-controller controller


【解决方案1】:

问题似乎出在你的 URL 上,在 javascript 中你不需要在你的 URL 中加上 '~',你可以使用

var url = "/Home/Capital";

在 MVC 中 URL 的更好方法是通过传递控制器和操作名称来使用 @URL,如下所示

@Url.Action("Capital", "Home")

因此您可以如下修改您的 javascript,在您的操作“Captial”中放置一个断点,然后查看您是否接到电话,您还可以查看浏览器控制台,看看是否发生任何错误。

function getCapital(country) {
    //alert(country);
    var url = '@Url.Action("Capital", "Home")';

    console.log(url);
    $.get(url, { country: country }, function (response) {
        $("#getCapital").html(response);
        alert(response);
    });
}

编辑 或者

function getCapital(country) {
        //alert(country);
        var url = "/Home/Capital";

        console.log(url);
        $.get(url, { country: country }, function (response) {
            $("#getCapital").html(response);
            alert(response);
        });
    }

如果您需要更多信息,请告诉我。

【讨论】:

  • 在浏览器控制台我现在得到一个 ReferenceError: $ is not defined.
  • @NiAu 它基本上没有正确加载 jQuery 或者它包含在您的 javascript 代码之后,您必须在任何这些脚本之前包含 jquery。查看代码的源代码并查看 jQuery 参考在哪里。它看起来像 。如果您不明白,请从浏览器分享您的页面源代码。
  • @NiAu 你的视图的扩展是(.cshtml)还是(.vb.html)?您是否尝试过 (var url = "/Home/Capital";) 代替 (var url = '@Url.Action("Capital", "Home")';)?答案已更新。
  • 有了新路线就可以了。我的观点的扩展名是.aspx。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
相关资源
最近更新 更多