<select ID="Country" name="Country"><option data-domain="AN" value="1">Andorra</option><option data-domain="UI" value="2">United arab Emirates</option><option data-domain="AF" value="3">Afghanistan</option>
选项有一个数据域属性,我可以像这样使用它
@HTML.DropDownListFor(m => m.Country,Model.CountryList)
Model.CountryList是Country valiables的数组
class Country{ public String Text { get; set; } public String Value { get; set; } public String Domain { get; set; }}
请任何人都可以提供解决方案
解决方法 您可以使用自定义帮助器方法构建CustomDropdownListFor,如下所示:自定义助手方法:
public static class CustomHelpers{ public class CustomSelectItem : SelectListItem { public string Class { get; set; } public string Disabled { get; set; } public string SelectedValue { get; set; } } public static MvcHTMLString CustomDropdownListFor<TModel,TProperty>(this HTMLHelper<TModel> HTMLHelper,Expression<Func<TModel,TProperty>> Expression,IEnumerable<CustomSelectItem> List,string selectedValue,string optionLabel,object HTMLAttributes = null) { if (Expression == null) { throw new ArgumentNullException("Expression"); } ModelMetadata Metadata = ModelMetadata.FromLambdaExpression<TModel,TProperty>(Expression,HTMLHelper.VIEwData); string name = ExpressionHelper.GetExpressionText((LambdaExpression)Expression); return CustomDropdownList(HTMLHelper,Metadata,name,optionLabel,List,selectedValue,HTMLHelper.AnonymousObjectToHTMLAttributes(HTMLAttributes)); } private static MvcHTMLString CustomDropdownList(this HTMLHelper HTMLHelper,ModelMetadata Metadata,string name,IDictionary<string,object> HTMLAttributes) { string fullname = HTMLHelper.VIEwContext.VIEwData.TemplateInfo.GetFullHTMLFIEldname(name); if (String.IsNullOrEmpty(fullname)) { throw new ArgumentException("name"); } TagBuilder dropdown = new TagBuilder("select"); dropdown.Attributes.Add("name",fullname); dropdown.MergeAttribute("data-val","true"); dropdown.MergeAttribute("data-val-required","Mandatory fIEld."); dropdown.MergeAttribute("data-val-number","The fIEld must be a number."); dropdown.MergeAttributes(HTMLAttributes); //dropdown.MergeAttributes(new RouteValueDictionary(HTMLAttributes)); dropdown.MergeAttributes(HTMLHelper.GetUnobtrusiveValIDationAttributes(name,Metadata)); StringBuilder options = new StringBuilder(); // Make optionLabel the first item that gets rendered. if (optionLabel != null) options.Append("<option value='" + String.Empty + "'>" + optionLabel + "</option>"); foreach (var item in List) { if (item.SelectedValue == "selected" && item.Disabled == "Disabled") options.Append("<option value='" + item.Value + "' class='" + item.Class + "' selected='" + item.SelectedValue + "' Disabled='" + item.Disabled + "'>" + item.Text + "</option>"); else if (item.SelectedValue != "selected" && item.Disabled == "Disabled") options.Append("<option value='" + item.Value + "' class='" + item.Class + "' Disabled='" + item.Disabled + "'>" + item.Text + "</option>"); else if (item.SelectedValue == "selected" && item.Disabled != "Disabled") options.Append("<option value='" + item.Value + "' class='" + item.Class + "' selected='" + item.SelectedValue + "'>" + item.Text + "</option>"); else options.Append("<option value='" + item.Value + "' class='" + item.Class + "'>" + item.Text + "</option>"); } dropdown.INNERHTML = options.ToString(); return MvcHTMLString.Create(dropdown.ToString(TagRenderMode.normal)); }}
查看(剃刀):
@HTML.CustomDropdownListFor(m => m.PersonID,VIEwBag.PersonData as List<CustomHelpers.CustomSelectItem>,null,"---- Select ----",new { name = "personID",ID = "personID"}) @HTML.ValIDationMessageFor(m => m.PersonID,new { @class = "ValIDationErrors" })
希望这可以帮助…
总结以上是内存溢出为你收集整理的带有自定义参数的Html.DropDownListFor()全部内容,希望文章能够帮你解决带有自定义参数的Html.DropDownListFor()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)