在mvc div数据中刷新Ajax

时间:2013-11-16 16:09:38

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

我正在开发一个MVC应用程序,我有一个方案来刷新页面的一部分基本上是ajax ......

 <div id="ajax" style="width:10%;float:left">     
 @foreach (var item in @Model.SModel.Where(x=>x.StudentId==13))
 {      
    <li>@Html.DisplayFor(score => item.StudentName)</li> 
 }   

这是我需要在点击按钮时刷新的div(页面的一部分)。我有2个js文件,data.jsrender.js ...

data.js 包含以下模板:

makeAJAXCall = 

function (url, params, callback) {

  $.ajax({


            type: "get",
            timeout: 180000,
            cache: false,
            url: url,
            dataType: "json",
            data: params,
            contentType: "application/json; charset=utf-8",
            success: function (result) {

                if (callback) {

                    callback(result);
                }
            },
            error: function (req, status, error) {

                }
                return null;
            }
        });
    };


    getGrid = function () {
        makeAJAXCall(urlCollection["getGridInfo"], "", function (result) {

            renderer.renderGridInfo('ajax', result);

        });
    };

render.js 文件如下:

renderGridInfo = function (area, data) {

    $("#" + area).text(data);
};


return {
    renderGridInfo: renderGridInfo
};

在按钮上的加载页面中单击功能为:

Service.addURL('getGridInfo', '@Html.Raw(@Url.Action("getGridInfo", "AjaxController"))');

        Service.getGrid();

ajax控制器中,代码为:

public JsonResult getGridInfo() 
{ 
    return Json(model, JsonRequestBehavior.AllowGet); 
}

但我遇到的问题是,控制器返回JsonResult,但'div'接受模型,因此输出为[object] [object] button click

问题:有没有办法从控制器返回的Jsondata中刷新此'div'

我必须遵循这种类型的设计而不使用AjaxForm。

1 个答案:

答案 0 :(得分:2)

看看会发生什么:

1)你返回 Json return Json(model, JsonRequestBehavior.AllowGet);
2)将返回的Json对象放入div的值:$("#" + area).text(data);

这就是为什么你最终在div中使用json的表示

您需要按如下方式进行更改:
1)假设您将该div的html放在名为 NewHtml 的模型字段中 2)从返回的json的属性中获取html:var returnedHtml = data.NewHtml;
3)使用html()方法代替text()$("#" + area).html(returnedHtml);