Skip to main content
 首页 » 编程设计

asp.net-mvc之ASP.NET MVC RadioButtonList For 始终存在

2025年12月25日41小虾米

我有一个 radiobuttonlistFor 自定义适配器工作,但是如果用户表单数据被重置,并且之前没有提交任何数据,一个单选按钮(第一个)总是被预选,我想避免这种情况,我该如何实现?

@Html.RadioButtonForSelectList(model => model.ViewModelForThingCreate.ThingTypeID, Model.ViewModelForCarCreate.CarTypeSelectList) 

和:
public static MvcHtmlString RadioButtonForSelectList<TModel, TProperty>(this HtmlHelper<TModel> HTMLHelper,Expression<Func<TModel, TProperty>> Expression, IEnumerable<SelectListItem> ListOfValues) 
        { 
            var MetaData = ModelMetadata.FromLambdaExpression(Expression, HTMLHelper.ViewData); 
            var SB = new StringBuilder(); 
 
            if (ListOfValues != null) 
            { 
                foreach (SelectListItem Item in ListOfValues) 
                { 
                    var ID = string.Format("{0}_{1}", MetaData.PropertyName, Item.Value); 
                    var Radio = HTMLHelper.RadioButtonFor(Expression, Item.Value, new { id = ID }).ToHtmlString(); 
                    SB.AppendFormat("<label class=\"radio inline\" for=\"{0}\">{1} {2}</label>", ID, Radio, HttpUtility.HtmlEncode(Item.Text)); 
                } 
            } 
            return MvcHtmlString.Create(SB.ToString()); 
        } 

谢谢!

请您参考如下方法:

这是您的自定义助手,按钮设置为未选中。试试这个,我认为它会使所有单选按钮都处于未选中状态。

public static MvcHtmlString RadioButtonForSelectList<TModel, TProperty>(this HtmlHelper<TModel> HTMLHelper,Expression<Func<TModel, TProperty>> Expression, IEnumerable<SelectListItem> ListOfValues) 
        { 
            var MetaData = ModelMetadata.FromLambdaExpression(Expression, HTMLHelper.ViewData); 
            var SB = new StringBuilder(); 
 
            if (ListOfValues != null) 
            { 
                foreach (SelectListItem Item in ListOfValues) 
                { 
                    var ID = string.Format("{0}_{1}", MetaData.PropertyName, Item.Value); 
                    var Radio = HTMLHelper.RadioButtonFor(Expression, Item.Value, new { id = ID }).ToHtmlString(); 
                    SB.AppendFormat("<label class=\"radio inline\" checked="false" for=\"{0}\">{1} {2}</label>", ID, Radio, HttpUtility.HtmlEncode(Item.Text)); 
                } 
            } 
            return MvcHtmlString.Create(SB.ToString()); 
        }