ASP.NET MVC 2验证SelectList

时间:2010-08-14 01:22:37

标签: c# .net asp.net asp.net-mvc-2

假设我在ViewModel中有以下选择列表(国家/地区):

//..
private static string[] _countries = new[] {
"USA",
"Canada",
"Japan"
};
//...
SelectList Countries = new SelectList(_countries, dinner.Country);
//...

我以下列方式呈现下拉列表:

<%: Html.DropDownListFor(m => m.Dinner.Country, Model.Countries) %>

我注意到使用firebug,我可以将自己的值注入DropDownList,并且该值可以插入到数据库中。

验证没有注入值(最好是DRY方法)的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

在插入数据库之前,您应始终验证数据服务器端。如果您有一个关键约束,那么这不会是一个问题,因为更新或插入会失败。在这种情况下,您应该有一个服务器端业务规则来在执行SQL调用之前验证您的对象。

由于您从静态项目列表构建列表,因此该业务层可以使用该列表,以便您可以与其进行比较,以确保模型中包含的值有效。您可以向对象添加方法,例如IsValid或可以进行快速验证的方法,并检查这些硬编码选择的值是否存在。

答案 1 :(得分:1)

我建议您利用DataAnnotations创建自己的custom validation attribute

这提供了一种封装验证逻辑的方法(满足您的DRY要求),并将应用于服务器端(防止像您描述的那样进行html操作)。