使用Telerik DataAccess,我有一个数字(1,0)字段在我的数据库称为chkSomething历史上用于确定一个复选框的状态(你知道,三态一个)Telerik用于ASP.NET MVC使用CheckBox整数
0 - Unchecked
1 - Checked
2 - Neither Checked nor Unchecked
但Kendo复选框只是一个2状态复选框。所以我想我可能只是延长了产品型号:
public partial class TripleCheckboxModel
{
private int _ID;
public int ID {
get { return this._ID; }
set { this._ID = value; }
}
private int _chkSomething;
public int ChkSomething {
get { return this._chkSomething; }
set { this._chkSomething = value; }
}
[NotMapped]
public bool BoolChkSomething {
get { return (this.ChkSomething == 1); }
set { this._chkSomething = (value) ? 1 : 0; }
}
}
这完全在客户端的工作原理:
public ActionResult chk_Update([DataSourceRequest] DataSourceRequest request, TripleCheckboxModel updateItem)
{
TripleCheckboxModel originalItem = this.dbContext.TripleCheckboxModels.FirstOrDefault(q => q.ID == updateItem.ID);
// Here you can see the Issus
originalItem.BoolChkSomething = updateItem.BoolChkSomething;
this.dbContext.SaveChanges();
return ...
}
:切换复选框这样一个后调用CRUD操作时
@(Html.Kendo().CheckBoxFor(m => m.BoolChkSomething)
然而
它不返回客户选择的实际状态,而是加载项目时最初设置的状态。我很难跟踪这个问题,因为看起来,当将JSON转换回TripleCheckboxModel时,BoolChkSomething属性中的setter不会被调用(或者在ChkSomething属性被赋值时被覆盖)。
有没有一个(更容易)的方式来得到这个运行? (不更改数据库,因为它被另一个应用程序使用)
谢谢你这样做,这样它就无法工作。我转向您的声明,因为它更加优雅,但不幸的是,这并不能解决问题,因为一些属性现在具有正确的值,有些属性没有,直接指向属性的赋值顺序。 –