微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐