- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 ASP.NET MVC 应用程序中,我有一个具有 bool 属性的模型
public class MyModel
{
[DisplayName("Inherit")]
public bool IsInherit{get;set;}
}
Razor View
<form id="myform">
@Html.CheckBoxFor(x=>x.IsInherit)
</form>
这会将 html 页面呈现为(假设 IsInherit
为 true)
<form id="myform">
<input name="IsInherit" id="IsInherit" type="checkbox" checked="checked" value="true" data-val-required="The Inherit field is required." data-val="true">
<input name="IsInherit" type="hidden" value="false">
</form>
当选中复选框时,如果我使用 jQuery $("#myform").serialize()
序列化表单,则结果字符串为
IsInherit=true&IsInherit=false
在 AJAX POST 上,MVC 的数据绑定(bind)按预期正确将模型属性值设置为 true
。
但是,在某些情况下,我需要将表单序列化为对象。为此,我有下面的自定义 jquery 扩展方法,将表单序列化为对象
(function() {
$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
})(jQuery)
当我使用此扩展方法$("#myform").serializeObject()
序列化表单时,生成的对象具有数组类型的IsInherit
属性,具有两个值true
和 false
当我 AJAX POST json 对象到服务器时,MVC 投标不起作用。我收到错误 The Inherit field is required.
如何解决这个问题?
请注意,问题在于选中复选框时,因为选中复选框时 serializeObject
方法会创建数组类型的属性,我猜 MVC 绑定(bind)不知道如何绑定(bind)它。
如果未选中复选框,则一切正常
最佳答案
我修改了我的 JavaScript 并使用按位运算符 |
来设置该值(如果它是 bool 值)
(function () {
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name]) {
if ((typeof (this.value) === "boolean") ||
(typeof (this.value) === "string" && this.value != undefined && (this.value.toLowerCase() === "true" || this.value.toLowerCase() === "false"))) {
o[this.name] = ((o[this.name] == "true") | (this.value == "true")) ? true : false; //Sets value to true if one of two bits is true
}
else {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
}
} else {
o[this.name] = this.value || '';
}
});
return o;
};
})(jQuery)
关于jquery - 将复选框序列化为 bool 属性和 MVC 绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46186562/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!