带有自定义参数的Html.DropDownListFor()

带有自定义参数的Html.DropDownListFor(),第1张

概述我想在 HTML帮助器中添加扩展方法,以生成像这样的选择和选项 <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-d 我想在 HTML帮助器中添加扩展方法,以生成像这样的选择和选项

<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()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1048080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存