加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC RadioButtonListFor始终是预设的

发布时间:2020-12-16 03:52:48 所属栏目:asp.Net 来源:网络整理
导读:我有一个radiobuttonlist为自定义适配器工作,但如果用户表单数据被重置,并且之前没有提交任何数据,其中一个单选按钮(第一个)总是被预选,我想避免这种情况,我该如何实现? @Html.RadioButtonForSelectList(model = model.ViewModelForThingCreate.ThingTypeID
我有一个radiobuttonlist为自定义适配器工作,但如果用户表单数据被重置,并且之前没有提交任何数据,其中一个单选按钮(第一个)总是被预选,我想避免这种情况,我该如何实现?

@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());
        }

谢谢!

解决方法

我刚刚在mvc3模板中尝试过你的方法,它似乎对我来说很好.基本上我已经创建了一些模型

public class IndexModel
 {
     public string ID;
     public IEnumerable<SelectListItem> Elements;
 }

然后创建实例和填充值:

var model = new IndexModel()
            {
                ID = "a",Elements = 
                       new List<SelectListItem>() { 
                                                    new SelectListItem() { Text = "test1",Value = "1"},new SelectListItem() { Text = "test2",Value = "2"}}
            };

在视图中我使用了你的扩展方法

<form>
@(Extensions.RadioButtonForSelectList(Html,x => x.ID,Model.Elements))
<button type="reset">Reset</button>
</form>

发布后,一切似乎都很好.在加载时未选择字段,并在按下“重置”按钮后清除它们.

你能否提供更多细节,因为我不确定我是否完全明白你想要达到的目的:-)

编辑:

这是单选按钮HTML的示例.它们在开头肯定没有填充,如果你想要它们需要添加,但默认情况下你可以发送表单而不选择任何单选按钮.您还可以通过添加选中来检查一个,如第二个示例中所示.你在客户端使用一些JavaScript吗?也许是造成这种副作用? http://jsbin.com/isadun/1

MZ

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读