gpt4 book ai didi

asp.net-mvc - DropDownListFor 枚举不会绑定(bind)回模型

转载 作者:行者123 更新时间:2023-12-02 22:27:28 25 4
gpt4 key购买 nike

在我的 MVC 表单上,我需要将下拉框绑定(bind)到我的 ViewModel 上的枚举。我发现最好的方法是描述 here .

一开始它似乎可以工作,但现在我已将验证添加到我的表单中,我发现它不会绑定(bind)回 ViewModel。

这是我的 Razor 代码:

<div class="editor-field">
@Html.DropDownListFor(model => model.response,
new SelectList(Enum.GetValues(typeof(Vouchers.Models.ResponseType))),
"Please Select")
</div>

这是我对该字段的 View 模型定义:

[DisplayName("Response")]
[Range(1, int.MaxValue, ErrorMessage = "You must select a response before submitting this form.")]
public ResponseType response { get; set; }

问题是我无法提交表格;即使从我的下拉菜单中选择了响应后,也会显示 Range 属性的验证错误消息,并且客户端验证会阻止表单提交。

我认为这是因为下拉列表的 SelectList 仅包含枚举的字符串名称,而不包含基础整数值。

我该如何解决这个问题?

最佳答案

创建字典,其中键是枚举的整数表示,字符串是枚举的名称。

@Html.DropDownListFor(model => model.response, 
new SelectList(Enum.GetValues(typeof(Vouchers.Models.ResponseType)).OfType<Vouchers.Models.VoucherResponseType>().ToDictionary(x => Convert.ToInt32(x), y => y.ToString()), "Key", "Value"), "Please Select")

抱歉可能有错误,我没有尝试过。

关于asp.net-mvc - DropDownListFor 枚举不会绑定(bind)回模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com