我有一个模型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?
答案 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之间的各种转换。