在jQuery中访问Model对象

时间:2009-11-30 15:40:21

标签: jquery asp.net-mvc

我有一个模型Customers,其中我有一个列表属性PayHistory。我需要在ASP.NET MVC(C#)应用程序中使用jQuery将表与PayHistory对象绑定。

我使用jQuery绑定表:

<table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td>
            <div id="PaidDate">
            </div>
        </td>
        <td>
            <div id="PaidAmt">
            </div>
        </td>
    </tr>
</table>

<script type="text/javascript" language="javascript">
    $(document).ready(function() {
      //Initialize the dynamic Value;
      _dynId = 1;
      var data= '<%= Model.PayHistory %>';
       if (data != null) {
            for (i in data) {
                var pay= data[i];
                $('#PaidDate').append('<div id="PaidDate' + _dynId  + '" style="height:20px;padding-left:10px;">' + '<label>' + pay.paidDate+ '</label>');
                $('#PaidAmt').append('<div id="PaidAmt' + _dynId  + '" style="height:20px;padding-left:10px;">' + '<label>' + pay.PaidAmount + '</label>');
                _dynId   += 1;
            }
        }
    });
</script>

在上面的HTML中,我试图访问jQuery中的列表对象PayHistory,但它给出了对象的类型。

如何在jQuery中访问对象以绑定表格,如上面给出的HTML?

3 个答案:

答案 0 :(得分:5)

您需要做更多工作才能将数据转换为JavaScript可以理解的表单。最简单的方法是将对象中的数据编码为JSON string,然后将其发送到data变量。

您可以手动执行此操作(通过创建执行此操作的类的方法),或者由于您使用的是ASP.NET MVC,因此可以使用Json method。但是,这必须在Controller而不是View中完成。所以,我会将它添加到您的Model对象或通用View Data中。它可能作为Model对象的一个​​属性存在,它只是在原始值上调用Json方法并返回它。

<强> C#

public string JsonPayHistory
{
    get 
    {
        return Json(PayHistory);
    }
}

<强> JS

var data = '<%= Model.JsonPayHistory %>';

您需要查看返回的字符串。它将采用JSON格式,并且必须进行评估。您可以通过添加:

来完成此操作
data = eval(data); // usually a bad idea

data = JSON.parse(data); // may require a library if browser doesn't support it

现在,您应该拥有一个与C#对象类似的对象。您可以循环它并按名称引用属性。如果您提供PayHistory对象的基本结构,我可以提供更好的示例。

答案 1 :(得分:2)

var data= <%= new JavaScriptSerializer().Serialize(Model.PayHistory) %>;

答案 2 :(得分:0)

使用Json.NET进行.NET对象和类与JSON之间的各种转换。