我们正在从 Telerik Q3 2010 asp.net mvc 扩展升级到 Q1 2011。以前,在网格编辑禁用值未发布在表单中,但现在它们被发布为空值。我询问了 Telerik 团队,他们确认这是预期行为,他们会将所有模型发布回控制器。
困扰我的是字段的空值使 Modelstate 无效,即使该字段可以为空并且我没有使用 Required 属性来装饰它。
这是我的视图模型:
public class VMDoctorHospital
{
[HiddenInput(DisplayValue = false)]
public int DrHospitalID { get; set; }
[HiddenInput(DisplayValue = false)]
public int DoctorID { get; set; }
[DisplayName("Personal Clinic?")]
public bool PersonalClinic { get; set; }
[DisplayName("Clinic Name")]
public string ClinicName { get; set; }
[DisplayName("Hospital"), UIHint("IntStrEditor")]
public int? HospitalID { get; set; }
[DisplayName("Doctor's Position")]
//ohter fields
}
在 Model PersonalClinic 标志中,指示将禁用和隐藏哪个输入(诊所名称或 HospitalID)。
现在,即使他们在选中personalClinin复选框时为HospitalID发布了空值,这完全有意义,并且在控制器端HospitalID应该接受空值,因为它可以为空而不是必需的,但实际上我收到“值“null”是对 ModelstateDictionary 中的 HospitalID 无效。
我不知道是什么让它以这种方式表现。