C# MVC 5 Razor:下拉列表显示小写值而不是大写值

弗雷德里克·利亚尔

我有一个看起来像这样的枚举(描述被审查但值是准确的):

    public enum internalTypes
    {
        [Description("Description 1 (W)")]
        W,
        [Description("Description 2 (w)")]
        w,
        [Description("Description 3 (A)")]
        A,
        [Description("Description 4 (C)")]
        C,
        [Description("Description 5 (K)")]
        K,
        [Description("Description 6 (X)")]
        X
    }

我必须在从数据库中获取数据的视图中显示此下拉列表。对于这个问题,请注意值“W”(大写)是我要显示的值。

DropDownList 代码如下所示:

    @Html.DropDownListFor(model => model.Internal_List[i].ValueToDisplay, new SelectList(Model.listOfTypes, "Value", "Text", Model.Internal_List[i].ValueToDisplay), "", new { @class = "full", style = "width:275px" })

Model.listOfTypes:

        IEnumerable<ExtensionMethods.internalTypes> internalTypes= Enum.GetValues(typeof(ExtensionMethods.internalTypes)).Cast<ExtensionMethods.internalTypes>();
        evm.listOfTypes        = from inter in internalTypes
                                 select new SelectListItem
                                 {
                                     Text = ExtensionMethods.GetDescription(inter),
                                     Value = inter.ToString()
                                 };

其中 Internal_List[i].ValueToDisplay 确实被正确发送 - 也就是说,它正确发送“W”(大写)。但是,视图显示“w”(小写):

在此处输入图片说明

这是一个问题,因为我必须显示“W”,而不是“w”,因为这是存储在数据库中的值。同样,如果存储了“w”,那么我必须显示“w”,而不是“W”。我不明白为什么在这种情况下将“W”转换为“w”,因为在调试程序时,我可以清楚地看到传递给视图的值是“W”。

谁能告诉我我可能在哪里犯了错误?请注意,我不能简单地给 "w" 另一个值——我在这件事上别无选择。

用户3559349

您不能使用DropDownListFor()(或EnumDropDownListFor()等方法)选择正确的选项这些方法IEnumerable<SelectListItem>内部生成一个新的,以便Selected根据绑定到的属性的值设置属性。

具体来说,该private static IEnumerable<SelectListItem> GetSelectListWithDefaultValue()方法(您可以在此处查看源代码)比较使用StringComparer.OrdinalIgnoreCase的值,因此w(小写)和W(大写)的值都匹配并且两个选项都将使用该selected="selected"属性设置

但是因为你生成了一个<select>(没有multiple属性),那将是无效的(只能选择一个选项),所以浏览器只选择最后一个渲染的selected="selected"

如果你不能改变你的值enum,并想使用一个HtmlHelper方法,你需要编写你自己的扩展方法(将源代码复制到你自己的项目中,删除你不需要的各种重载,d并进行修改它不区分大小写)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在MVC 5 EF 6中使用下拉列表显示与值不同的标签文本?

来自分类Dev

基于下拉列表显示和隐藏 asp mvc 5

来自分类Dev

C#MVC显示从razor中的viewmodel下拉列表

来自分类Dev

ASP.NET MVC 5设置下拉列表的值

来自分类Dev

mvc5 下拉列表中的默认选定值

来自分类Dev

下拉列表事件 MVC 5

来自分类Dev

PHP-HTML5-Form-我的查询生成的下拉列表显示空白值

来自分类Dev

从C#生成JQuery(MVC 5-Razor)

来自分类Dev

使用视图模型属性填充下拉列表:MVC 5,Razor

来自分类Dev

如何从MVC C#的下拉列表中获取选定的值

来自分类Dev

MVC5 SPA IdentityUser添加状态并将其显示为具有静态值的下拉列表

来自分类Dev

根据asp.net mvc5中数据库的值设置下拉列表的值

来自分类Dev

MVC 5从另一个表填充下拉列表并保存值NOT KEY

来自分类Dev

为下拉列表(MVC5)设置不同的默认值

来自分类Dev

MVC5视图下拉列表

来自分类Dev

在MVC 5中枚举到下拉列表

来自分类Dev

在MVC 5中枚举到下拉列表

来自分类Dev

MVC5 下拉列表验证

来自分类Dev

c#MVC5引用表,如果值不为空

来自分类Dev

C#MVC 5 HTML.ActionLInk

来自分类Dev

外键 C# MVC 5?

来自分类Dev

mvc 5从表中选择列表,DropDownList的值为空白

来自分类Dev

C#MVC 5 Razor:使用Ajax更新部分视图失败

来自分类Dev

DropDownList初始值重复-MVC 5

来自分类Dev

MVC5单选按钮值错误

来自分类Dev

如何使用Razor / MVC 5将元素动态添加到下拉列表

来自分类Dev

C#MVC-在表单发布中检索下拉列表选项值

来自分类Dev

ASP.net MVC 5 Razor下拉框

来自分类Dev

C#MVC 5中具有IList视图模型的单选按钮列表