比方说,你有一个这样的枚举:这样自定义验证服务器和客户端
public enum ColorsEnum
{
Undefined,
Blue,
Red,
Green
}
和模型:
public class Foo
{
public ColorsEnum PreferedColor { get; set; }
}
有了这样的观点:
@model WebUI.Models.Foo
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.PreferedColor)
@Html.DropDownListForEnum(m => m.PreferedColor)
<input type="submit">
}
下面是DropdownListForEnum助手:
public static IHtmlString DropDownListForEnum<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression)
{
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
if (metaData.ModelType.IsEnum)
{
var names = Enum.GetNames(metaData.ModelType);
var translatedNames = GetTranslatedNames(metaData.ModelType);
var query = from p in names
select new SelectListItem
{
Text = translatedNames.ContainsKey(p) ? translatedNames[p] : p,
Value = p,
Selected = false
};
return htmlHelper.DropDownList(metaData.PropertyName, query.ToList());
}
else
{
throw new ApplicationException(
"The DropDownListForEnum helper function must be used with an enum property");
}
}
我的问题:您如何执行验证(客户端&服务器端)以确保用户选择了有效的颜色?验证过程应拒绝“未定义”的颜色。
感谢。
Thant对我来说更加清晰。谢谢。 – Bronzato 2012-03-25 08:54:14