【发布时间】:2010-03-22 17:32:45
【问题描述】:
我正在使用 ASP.NET MVC 2,并且正在使用每个视图的视图模型方法。我还使用 Automapper 将属性从我的域模型映射到视图模型。
以这个视图模型为例(带有用于验证目的的必需数据注释属性):
public class BlogPost_ViewModel
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
[Required]
public string Text { get; set; }
}
在帖子编辑器视图中,我使用的是富文本编辑器 (CKeditor)。因为 CKeditor 是一个 HTML 编辑器,所以我理想情况下需要 CKeditor 在提交表单时对用户的输入进行 HTMLencode,这样 ASP.NET 的输入验证就不会报错。这不是问题,因为 CKeditor 内置了这个功能,但是我需要在映射回域对象(通过 Automapper)之前解码 CKeditor 的输出。
我想添加一个新属性(到上面的视图模型)来解决这个问题,如下:
public string HTMLEncodedText {
get { return HTMLEncode(Text); }
set { Text = HTMLDecode(value); }
}
然后我可以将此属性绑定到视图中的 CKeditor,但仍使用 Automapper 映射控制器中的“文本”属性 - 所有这些都无需关闭输入验证。
我的问题是:您知道 ASP.NET MVC 2 中的模型绑定和验证过程是如何工作的吗?在执行验证之前是否绑定了所有模型属性?或者是每个单独的属性在设置时都得到验证。我认为理想情况下,我的想法需要在验证模型之前设置所有属性。
【问题讨论】:
标签: asp.net-mvc validation ckeditor automapper