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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....