【问题标题】:mvc 3 razor call a server side function using jquerymvc 3 razor 使用 jquery 调用服务器端函数
【发布时间】:2011-09-03 08:18:30
【问题描述】:

我正在使用此代码从服务器获取部分视图,而不是将其放入 div 中

    $.ajax(
    {
        type: "POST",
        url: "MyControler/MyAction",
        success: function (result) {
            $('#partialView').html(result);      
        },
        error: function (req, status, error) {
            alert("Coudn't load partial view");
        }
    });

现在我想做同样的事情,但我会调用一个简单的方法来返回一个字符串并将结果放在一个文本框中

    $.ajax(
    {
        type: "POST",
        url: "MyControler/MyMethod",
        success: function (result) {
            $('#myTextBox').html(result);      
        },
        error: function (req, status, error) {
            alert("Coudn't load partial view");
        }
    });

方法应该是这样的

    public string MyMethod()
    {
        returning "hello";
    }

显然它不起作用,但有没有办法让它起作用?是否有我应该为方法使用的属性

提前致谢

ps:

根据我在第一个答案中的红色,我尝试了这个,但它不起作用

    public ActionResult Hello()
    {
        return Content("Hi there!");
    }

ajax 调用有问题吗??

$.ajax(
    {
        type: "POST",
         url: "MyControler/Hello",
        success: function (result) {
            $('#myTextBox').html(result);      
     },
    error: function (req, status, error) {
        alert("Coudn't load partial view");
    }
});

ps

我想尝试一个干净的项目,使用返回字符串的简单方法效果很好

因为它起作用了,所以我尝试将它实施到我的项目中,但它似乎只能从 global.asax 文件中设置的起始页面开始工作,知道我应该怎么做才能让它在每个页面中工作?

【问题讨论】:

    标签: asp.net-mvc-3 jquery razor


    【解决方案1】:

    我猜你应该使用以下

    $('#myTextBox').attr('value',result); 
    

    而不是

    $('#myTextBox').html(result); 
    

    【讨论】:

      【解决方案2】:

      您正在进行 HttpPost 调用。因此,请确保您的 Action 方法使用HttpPost 属性进行修饰。也总是尝试使用Url.Action HTML Helper 方法作为操作方法的路径。

      假设您在MMyControlerController 中存在Hello Action 方法,下面的代码应该可以工作。

      $.ajax(
              {
               type: "POST",
               url: "@Url.Action("Hello","MyControler")",
               success: function (result) {
                   alert("result from server "+result);
                   $('#myTextBox').html(result);      
               },
              error: function (req, status, error) {
                  alert("Coudn't load partial view");
              }
      });
      

      你的行动方法

      [HttpPost]
      public ActionResult Hello()
      {
        return Content("This is String Content");
      }
      

      【讨论】:

        【解决方案3】:

        当您在虚拟目录或子域下运行时,最好使用Url.Action 方法。 Action 方法将创建正确的 Url。

        除此之外,您似乎正在向该网站发布信息,那么您是否已将 HttpPost 属性添加到您的操作中?

        【讨论】:

        • 能否请您解释一下,我不确定我理解您的意思
        • url: "MyController/MyAction" 行,可以像 url: "@Url.Action("MyAction", "MyController")" 那样使用 Url.Action 方法。如果您使用的是扩展 Javascript 文件,则简单地将 Url 嵌入/生成为主页上的变量,并通过外部文件引用它。
        【解决方案4】:

        你想从那个方法返回一个字符串,是的,但是你想要的是一个返回字符串的 ActionResult 在 StackOverflow 上查看以下问题和答案。

        In MVC, how do I return a string result?

        【讨论】:

        • 根据我的想法,我尝试了这个,但它不起作用 public ActionResult Hello() { return Content("Hi there!"); }
        • 请将您的问题编辑为您需要粘贴代码或进行较大更改的时间
        • 这对我没有帮助,因为我做了他们所说的同样的事情,我认为 ajax 调用有问题,你能检查一下吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-14
        • 2012-12-05
        • 2018-03-09
        • 1970-01-01
        相关资源
        最近更新 更多