【发布时间】:2011-09-23 20:35:12
【问题描述】:
为了通过 AJAX 调用向服务器提交表单数据以绑定 Telerik MVC 网格,我们可以将 OnDataBinding 事件中的 e.data 设置为匿名 JavaScript 对象
<script type="text/javascript">
function Grid_onDataBinding(e) {
var categoryValue = "Beverages";
var priceValue = 3.14;
// pass additional values by setting the "data" field of the event argument
e.data = {
// the key ("category") specifies the variable name of the action method which will contain the specified value
category: categoryValue,
price: priceValue
};
}
</script>
为了方便布尔值的模型绑定,ASP.NET MVC 会生成复选框以及同名的隐藏文本字段
<input name="myCheckBox" class="check-box" id="myCheckBox" type="checkbox" CHECKED="checked" value="true"/>
<input name="myCheckBox" type="hidden" value="false"/>
当这些被提交时,提交的数据是
myCheckBox=true&MyCheckBox=false - 当复选框被选中时
myCheckBox=false - 当复选框未被选中时
对于没有复选框的页面,可以通过以下方式轻松获取帖子数据
e.data = form.serializeObject()
serializeObject 通过循环遍历所有表单字段来创建该对象。当存在上述复选框时,如何在表单的情况下构造该对象?基本上在允许名称重复的情况下,如何以对象形式表示名称-值对列表?
e.data = {
textBox1: "some value1",
myCheckBox: true //,
//myCheckBox: false // ???
};
serializeObject 的实现为此类表单元素创建了一个数组,并将这些元素作为 myCheckBox[]=true&myCheckBox[]=false 提交,这会破坏服务器端的模型绑定。
【问题讨论】:
标签: javascript asp.net-mvc-3 telerik telerik-grid