asp.net-mvc – SelectListItem中的Selected属性永远不会起作用(DropDownList
发布时间:2020-12-05 06:03:59 所属栏目:asp.Net 来源:互联网
导读:我在选择DropDownList的值时遇到问题.我一直在阅读所有类似的帖子,我无法得到解决方案. 实际的方法对我来说似乎非常好,因为我可以检查SelectList中的字段: var selectList = new ListSelectListItem( from variable in someKindOfCollection select new Sele
我在选择DropDownList的值时遇到问题.我一直在阅读所有类似的帖子,我无法得到解决方案. 实际的方法对我来说似乎非常好,因为我可以检查SelectList中的字段: var selectList = new List<SelectListItem>( from variable in someKindOfCollection select new SelectListItem { Selected = variable.Property == selection,Text = variable.Property,Value = variable.Property }); 据说,这给了我完全的控制权.在构建了selectList之后,我可以使用调试器检查变量.一切都很好,其中一个标有“Selected”属性. 然后我使用DropDownListFor来显示视图: @Html.DropDownListFor( g => g.SomePropertyInModel,selectList,new { @class = "cssClass" }) 但它没有用,从来没有…“渲染”下拉列表,但没有选择任何东西. 非常感谢 :) 新例子 @foreach (var loopVariable in Model.Collection) { if (Model.SomeCondition != null) { selection = someValue; } var selectList = new List<SelectListItem>( from variable in someKindOfCollection select new SelectListItem { Selected = variable.Property == selection,Value = variable.Property }); @Html.DropDownListFor( g => g.SomePropertyInModel,new { @class = "cssClass" }) } 那么,selectList是导致行为的局部变量的事实?对不起,我没想到就是这样. 解决方法我认为你遇到了同样的问题.我查看了源代码以找到我的解决方案,看起来这对我来说是一个错误.下面的DropDownListFor应该有帮助,关键是你将选中的值传递给html帮助器.希望这可以帮助.public static class SelectExtensions { public static IHtmlString DropDownListFor<TModel,TProperty>(this HtmlHelper<TModel> helper,Expression<Func<TModel,TProperty>> expression,IEnumerable<SelectListItem> selectList,string selectedValue,string optionLabel,object htmlAttributes = null) { return DropDownListHelper(helper,ExpressionHelper.GetExpressionText(expression),selectedValue,optionLabel,htmlAttributes); } /// <summary> /// This is almost identical to the one in ASP.NET MVC 3 however it removes the default values stuff so that the Selected property of the SelectListItem class actually works /// </summary> private static IHtmlString DropDownListHelper(HtmlHelper helper,string name,object htmlAttributes) { name = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name); // Convert each ListItem to an option tag var listItemBuilder = new StringBuilder(); // Make optionLabel the first item that gets rendered if (optionLabel != null) listItemBuilder.AppendLine(ListItemToOption(new SelectListItem() { Text = optionLabel,Value = String.Empty,Selected = false },selectedValue)); // Add the other options foreach (var item in selectList) { listItemBuilder.AppendLine(ListItemToOption(item,selectedValue)); } // Now add the select tag var tag = new TagBuilder("select") { InnerHtml = listItemBuilder.ToString() }; tag.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); tag.MergeAttribute("name",name,true); tag.GenerateId(name); // If there are any errors for a named field,we add the css attribute ModelState modelState; if (helper.ViewData.ModelState.TryGetValue(name,out modelState)) { if (modelState.Errors.Count > 0) tag.AddCssClass(HtmlHelper.ValidationInputCssClassName); } // Add the unobtrusive validation attributes tag.MergeAttributes(helper.GetUnobtrusiveValidationAttributes(name)); return tag.ToHtmlString(TagRenderMode.Normal); } private static string ListItemToOption(SelectListItem item,string selectedValue) { var tag = new TagBuilder("option") { InnerHtml = HttpUtility.HtmlEncode(item.Text) }; if (item.Value != null) tag.Attributes["value"] = item.Value; if ((!string.IsNullOrEmpty(selectedValue) && item.Value == selectedValue) || item.Selected) tag.Attributes["selected"] = "selected"; return tag.ToString(TagRenderMode.Normal); } } (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 密码由6-12位数字或字母组成,密码哈希加密
- Plone和Asp.Net集成
- asp.net 使用驻留在页面中的Cache缓存常用可定时更新的数据
- ASP.NET MVC 4 JSON绑定到视图模型 – 嵌套对象错误
- 实体框架 – WebApi OData:$filter’any’或’all’查询不
- Phonegap上的ASP.NET窗体身份验证问题(Android)
- asp.net – 手动更新表单认证券:
- ASP.NET web.config中数据库连接字符串connectionStrings节
- asp.net – .Net Core 2 Spa模板与角度材料
- asp.net-web-api – WebAPI中的长时间运行任务
推荐文章
站长推荐
- asp.net-core – 如何使用FluentValidation.AspN
- asp.net-mvc-4 – 如何在Kendo UI Grid中扩展页面
- 在asp.net中使用eval(“”)
- ASP.NET 4的IIS和服务器操作系统要求
- asp.net-mvc-3 – 应该使用HTTP引用来验证还是令
- asp.net – “2015年4月20日Google帐户的OpenID2
- asp.net-mvc – 何时使用asp.net mvc的路由规则v
- NHibernate中对同一个对象的Lazyload要设置一致
- asp.net-mvc – Gzip压缩无法运行ASP.net MVC5
- 为什么asp.net将页面包装在一个表单中?
热点阅读