我用谷歌搜索了答案,并在主题中发现了许多问题和博客文章。许多看起来很复杂的方式,有些是不完整的。
我有一个具有 2 个类型属性的 Customer 对象Address
。1 是BillingAddress,另一个是ShippingAddress。在表单中,我使用 EditorTemplate 作为地址类型。用户可以选择 ShippingAddress 是否与 BillingAddress 相同。
public class Customer
{
public virtual string CustomerName { get; set; }
public virtual string Title { get; set; }
public virtual Address BillingAddress { get; set; }
public virtual Address ShippingAddress { get; set; }
public virtual bool ShippingSameAsBilling { get; set; }
// Cont..
}
public class Address
{
public virtual string AddressLine { get; set; }
[Required]
public virtual string City { get; set; }
// Cont..
}
注意:我的视图中有一个复选框public virtual bool ShippingSameAsBilling { get; set; }
我的问题是,我需要对 Address 属性进行验证,这是一种Address
具有必填字段的类。如果用户不选择“送货地址与帐单地址相同”,则一切正常。如果他/她选择它们相同并且只填写BillingAddress
,那么ShippingAddress
EditorTemplate 会在必填字段上显示错误。
我可以[Required]
从地址类中删除属性,并在表单发布后在服务器端手动验证。在这种情况下对我来说效果很好。我还需要知道如何手动将客户端验证绑定到现有的 mvc 验证中?或者请给我建议一个更好的方法来实现这个目标。