【问题标题】:Partial view not rendering through ajax call部分视图未通过 ajax 调用呈现
【发布时间】:2012-09-25 10:27:30
【问题描述】:

我有一个控制器动作,它被 JQuery ajax 调用,并希望将“结果”的内容返回到请求页面。 到目前为止,我...

控制器

    public ActionResult DynCalc(resultsModel model){
    ...
    //code that populates model - all working ok
    ...
     if (Request.IsAjaxRequest())
          {
            return PartialView("results", model.Results);
          }
          else
          {
            return null; //Handle this later
          }
    }

这会传回一个有效的模型。 从javascript调用:

     $.ajax({
            url: "/Test/DynCalc",
            type: "POST",
            data: $("#frmResults").serialize(), //This part works
            dataType: "html",
            success: function (result) {
                $('#resultsSection').html(result);
                $('#hide_panel a').flash("#111", 1000);
            }
        });

永远不会成功。希望有人能告诉我我很愚蠢并且遗漏了一些明显的东西?

我的部分视图结果只是一个带有 javascript 的 HTML 页面。如果我只有以下

Hello world 在我的结果视图中,然后它可以正常工作,在任何脚本中,它都不会

我在正确的轨道上吗?我应该更改控制器上的返回类型吗?还是使用 JSON?

我没有发布结果页面的内容,因为它是整个文档还是只是 <b>hi</b> 都没有关系 - 它做同样的事情。

【问题讨论】:

  • 通过 JQ 我假设你的意思是 jquery?我建议使用带有 Firebug 的 Firefox 来调试它。您可以单步执行它并查看实际发生的情况,并监控网络流量。还要添加一个失败/错误事件处理程序,因为如果它不成功,它的失败/错误也会告诉你一些事情。
  • @DaleBurrell 是的,我还添加了一个失败处理程序,并且每次都被命中,results 是一个对象 - 我无法检查。
  • 您无法在 Firebug 中检查它?
  • 我不使用 Firebug。我确实签入了一个类似的 Chrome 扩展程序,但我认为我的观点有误。我先看看里面的代码。
  • Doh,模型发生了一些变化,导致一段 Jquery 无效。它现在渲染,但这仍然是最好的方法吗?改为返回 JSOn 有什么好处吗?感谢您对浏览器中的检查器的想法,但有时会忘记它;)

标签: c# ajax asp.net-mvc asp.net-mvc-3 jquery


【解决方案1】:

尝试只返回一个视图。因为在这种情况下您的结果是一个完整的视图(因为操作结果可能是 HTML、XML、JSON ......无论如何)。 使用 PartialView 仅作为呈现部分视图的方式

例如在您的 MasterPage 上,您希望“始终”呈现用户信息:@RenderAction("UserInfoAction", "UserController")

【讨论】:

    【解决方案2】:
        var model= {
            "PropertyName1":$("#txt1").val(),
            "PropertyName1": $("#txt2").val(),         
           }
    
         $.ajax({
             type:"POST",
             url: 'Url.Action("DynCalc","ControllerName")',
             data: JSON.stringify(model),
             contentType: "application/json;charset=utf-8",
             success: function (data, status, xhr)
              {
             alert("The result is : " + status + ": " + data);
              },
             error: function (xhr)
             {
             alert(xhr.responseText);
             }
           });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-17
      • 2017-11-15
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 2019-02-08
      • 2014-03-27
      • 2016-03-12
      相关资源
      最近更新 更多