MVC3比较属性和嵌套对象属性
我有以下内容:
public class Address { public string Email { get; set; } } public class CheckoutViewModel { public Address Address { get; set; } [Compare("Address.Email", ErrorMessage = "The email addresses you entered do not match")] public string ConfirmEmailAddress { get; set; } }
使用客户端JS,这可以正确地处理和validation。 但是,在没有启用Javascript的情况下进行测试时,表单会回发,但ModelState错误会显示:
找不到名为Address.Email的属性。
有关为什么在客户端而不是服务器上工作的任何想法? 这种情况下的解决方案是什么?
非常感谢。
如果您查看生成的HTML源代码,您应该会发现Email的输入元素称为“Address.Email”,这就是validation在客户端工作的原因。
但是,看起来该属性不是为了处理嵌套属性而构建的,因此在服务器级别它不起作用(因为没有名为“Address.Email”的属性)。 因此,您需要确保两个属性处于同一级别(在ViewModel上或在Address类上都是)。
如果可能将Email地址属性放在视图模型上,然后再填充Address对象,则是最佳选择。
上述就是C#学习教程:MVC3比较属性和嵌套对象属性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/953301.html