我的EnumHelper对DropDownListFor有一个非常特殊的失败。我写下面的代码:
public static IHtmlString EnumDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> html, Expression<Func<TModel, TEnum>> expression, object htmlAttribute)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
var enumType = Nullable.GetUnderlyingType(metadata.ModelType) ?? metadata.ModelType;
var enumValues = Enum.GetValues(enumType).Cast<object>();
var items = from enumValue in enumValues
select new SelectListItem
{
Text = enumValue.ToString(),
Value = ((int)enumValue).ToString(),
Selected = enumValue.Equals(metadata.Model)
};
return html.DropDownListFor(expression, items, string.Empty, htmlAttribute);
}
我在两种不同的情况下称呼这个助手:
@EnumHelper.EnumDropDownListFor(Html, model => model.Part.Option, new { @class = "form-control checkpoint-choice toggle-comment" })
@EnumHelper.EnumDropDownListFor(Html, model => model.Part.ReviewGates[iRG].Option, new { @class = "form-control checkpoint-choice toggle-comment" })
每个调用引用相同的枚举。如果我更改值并保存它,绑定适用于这两个示例。 但只有第二个示例将在加载网站后选择默认值或保存的值。这两个示例都在同一个网站上,一个mvc创建网站。该模型具有如下约束力:
@model presta.APQP.Base.ViewModels.UIPart
当我检查来自HtmlHelper类的返回值时,我可以看到items中的一个项目将属性Selected设置为true,但是html.DropDownListfor生成没有选择选项的html代码。
有什么想法吗?
感谢您的帮助...