我目前正在ASP.NET MVC4应用程序中实现表单,我似乎无法找到有关输入验证的良好且可维护的解决方案.鉴于以下(简化)模型:
public class PersonalData { [Required] public string FirstName { get; set; } [Required] public string LastName { get; set; } [Required] public AddressData ResidentialAddress { get { return residentialAddress; } } private readonly AddressData residentialAddress = new AddressData(); public AddressData PostalAddress { get; set; } } public class AddressData { [Required] public string ZipCode { get; set; } [Required] public string City { get; set; } [Required] public string Street { get; set; } [Required] public int HouseNumber { get; set; } }
我认为这个模型定义本身就说明了一点:我能够将'PersonalData'类的属性声明为'Required',而且我也能够在'AddressData'模型上做同样的事情.这种方法适用于'ResidentialAddress'属性,但是使用可选的嵌套模型(例如'PostalAddress'属性中提供的模型)会变得棘手.
简单的说:
' PersonalData '模型上的所有字符串属性都是必需的;
存储在' ResidentialAddress '属性中的' AddressData '对象上的所有字符串属性都是必需的;
" 的PostalAddress "是可选的:的"所有字符串属性AddressData存储在'’-object 的PostalAddress ' -特性是必需的,如果一个’ AddressData " -instance指定给它.
"扁平化"PersonalData模型对我来说似乎不是一个理想的解决方案,特别是考虑到我们使用的是EditorTemplate.
我有什么选择?我在基础层面上做错了吗?是否有普遍支持的技术?