扩展Html.DropDownList出现的问题??

qingYun1029 qingYun1029 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
公司有扩展方法,扩展Html.DropDownList 结合Bootstrap插件使用,比如处理状态的时候,只需要枚举出状态类型,如下:

public enum YesOrNo
{
[Description("否")]
False = 0,
[Description("是")]
True = 1
}


然后在编辑页面,直接:
@Html.EnumDropDownListBlockFor(m => m.BaseCompany.DELETE_MARK, typeof(StatusEnum), "col-lg-3 col-md-3 col-sm-3 col-xs-3")
就可以根据“m.BaseCompany.DELETE_MARK”提供的值,默认帮你选中枚举中的项,问题来了,之所以能实现,因为Model中的BaseCompany的数据类型为decimal,当模型为bool类型的时候,扩展方法就不起作用了。
扩展方法没有什么内容,只是一些判断,所以代码就不贴了,贴一下扩展用到的View代码吧,如下:

@model object
@{
this.Layout = null;
string propertyExpression = ViewBag.PropertyName;
string containerClass = ViewBag.ContainerClass;

Type enumType = ViewBag.EnumType;
var dict = XXY.Common.Extends.EnumHelper.GetDescriptions(enumType);

var value = ModelMetadata.FromStringExpression(propertyExpression, ViewData);

var items = dict.Select(d => new SelectListItem()
{
Text = d.Value,
Value = ((int)Enum.Parse(enumType, d.Key, true)).ToString(),
Selected = value != null && value.Model != null ? value.Model.ToString().ToLower() == d.Key.ToString().ToLower() : false
});

RouteValueDictionary htmlAttributes = ViewBag.HtmlAttributes ?? new RouteValueDictionary();
if (htmlAttributes["class"] != null) {
htmlAttributes["class"] = string.Format("{0} {1}", htmlAttributes["class"], "form-control input-sm col-lg-2 col-md-2 col-xs-2");
} else {
htmlAttributes.Add("class", "form-control input-sm");
}
}

@helper Star() {
if (ViewBag.IsRequired) {
<span class="red">*</span>
}
}

<div class="@containerClass">
<span class="help-block">@ViewBag.DisplayName @Star()</span>
@Html.DropDownList(propertyExpression, items, htmlAttributes)
</div>



页面展示如下:


默认设置两个Model中两个字段的类型分别为 true,false,可显示效果还是这样,当将代码
@Html.DropDownList(propertyExpression, items, htmlAttributes) 中的“propertyExpression”换成“aa”时,就可以显示正确的结果,但是看生成的源文件的时候,这两个字段的id都被渲染成了 “aa”

请问这是什么问题??
...全文

相关推荐

DropDownList分组扩展

**自定义模板**:为了使分组效果更加明显,可以自定义DropDownList的ItemTemplate,给分组头添加特殊的样式或HTML标记,如`<optgroup>`标签在HTML中表示分组。

nocallstle

C#.NET DropDownList控件实现分组选择功能详解

DropDownList 是 ASP.NET Web Forms 中常用的服务器端控件,用于呈现 HTML 中的<select>元素。它支持数据绑定、事件处理以及丰富的属性配置,广泛应用于表单数据选择场景。本章将从 DropDownList 的基础使用入手,介绍其核心属性如DataSource和的作用与使用方式,并演示如何通过代码绑定静态数据和动态数据源。同时,还将讲解其常见事件如的触发机制及使用场景。

邹晓航0号

GridView DropDownList TreeView ListBox的扩展

在实际应用中,对这些控件的扩展可以提升用户体验,例如:1. **自定义样式和模板**:通过CSS和HTML模板,我们可以改变控件的外观和布局,使其符合品牌规范或者提供更友好的用户体验。2.

q512362091

JavaScript 仿DropDownList控件 html下拉列框美化

由于html的Select元素式样不更改,自已用Javascript写了DropDownList控件,支持分组.调用相当方便,不用更改原来的HTML结构.调用方法:DropDownList.bind(

Evenin

dropdownlist三级联动效果

HTML结构在HTML部分,定义了三个`<asp:DropDownList>`标签,分别代表一级、二级、三级下拉列表。每个下拉列表都有一个默认的“--”选项,以提供一个初始的未选择状态。

lun123451
评论 3
收藏 已收藏
分享
返回顶部
qingYun1029
.NET社区 62,271 成员 668,968 内容