Csharp/C#教程:MVC3比较属性和嵌套对象属性分享


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

(0)
上一篇 2021年11月19日
下一篇 2021年11月19日

精彩推荐