如何将模型从json传递到视图?

时间:2011-09-29 17:30:33

标签: json

我的视图中有一个按钮,当它执行GetReport()并执行时:json执行:public ActionResult GetReport(int licenseId)。

现在公共ActionResult GetReport(int licenseId)填充我的模型并由json返回。

每一件事都是正确的,但我不知道链接如何将模型(由json)返回给我的视图?

function GetReport() {
 var id = $("select#LicensesDropdown").val();
 if (id == null || id == '')
     return;
 var inputParams = "{licenseId : '" + id + "'}";
 var abc;
 $.ajax({
     url: "/Members/ClientMonitoring/GetReport",
     type: 'POST',
     dataType: 'json',
     data: inputParams,
     contentType: 'application/json; charset=utf-8',
     success: function (msg) {


    var d = Date.parseJSON(msg.StartDate);<-----------------returned filled model-------------

                                                here i don't know how to fill my grid now

    }
});

}

我的模特--------------------------------------------- -------------------------------------------------- ----------------------

 public class ReportBaseModel
  {
    public List<person> MonitoringLicenseModelsList { get; set; }

}

我的行动结果-------------------------------------------- -------------------------------------------------- ------------

 [HttpPost]
 public ActionResult GetReport(int licenseId)
    {
         //  fill reportmodel it contains list of data and return it by jason

         return Json(reportmodel);
    }

在我看来-------------------------------------------- -------------------------------------------------- ----------------

 @model Karanoos.Areas.Members.Models.CompositModels.ReportBaseModel

 <input id="ButtonGetReport" type="button" value="Report" class="btnnormal" onclick="GetReport();" />

@{        

var grid = new WebGrid(source: Model.LicensesClientsPacketModelsList,
             defaultSort: "LicenseUI",
             rowsPerPage: 3);
}
<div id="grid">
  @grid.GetHtml(
    tableStyle: "grid",
    headerStyle: "head",
    alternatingRowStyle: "alt",
    columns: grid.Columns(
                grid.Column("LicenseUI"),
                grid.Column("AccountName"),
                grid.Column("AppName")
    )
)

1 个答案:

答案 0 :(得分:1)

当您执行Ajax调用并获取JSON时,您处于客户端,因此您可以忘记任何网格和服务器端控件。您唯一能做的就是获取JSON数组并将其填充到浏览器中生成的页面中的纯空HTML表中。

有许多JQuery插件可以帮助您将json加载到HTML元素中,其中一个是loadJSON插件(请参阅http://code.google.com/p/jquery-load-json/的详细信息),它允许您将json数组加载到空白HTML表中。

作为示例,请参阅http://jquery-load-json.googlecode.com/svn/trunk/list.html如何从服务器端获取JSON数组并将其加载到UL / LI HTML结构中。你可以使用空白表做类似的事情。

约万