部分视图无法通过ajax调用呈现

时间:2012-09-25 10:27:31

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

我有一个控制器动作,它被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>并不重要 - 它做同样的事情。

2 个答案:

答案 0 :(得分:1)

尝试仅返回一个视图。因为在这种情况下你的结果是一个完整的视图(因为动作结果可能是HTML,XML,JSON ......等等)。 仅使用PartialView 作为渲染视图的部分的方法。

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

答案 1 :(得分:0)

    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);
         }
       });