c# - 枚举的多选下拉列表

标签 c# asp.net-mvc

我可以通过哪种方式实现枚举值的下拉列表?

我有一个这样的枚举:

public enum ValueEnum : byte
{
    [Description("Value 1")]
    Value1 = 1,
    [Description("Value 2")]
    Value2 = 2,
    [Description("Value 3")]
    Value3 = 4
}

我想从服务器端的多个选择中获取单个值而不是所选值列表:

    public ActionResult ValueAction(ValueEnum result)
    {
        //too many code
        return View();
    }

其中结果可以是 ValueEnum.Value1ValueEnum.Value1 | ValueEnum.Value3

没有客户端总和有没有办法做到这一点?

最佳答案

我通过以下行为在客户端解决了这个问题:

获取方法:

[HttpGet]
public ActionResult ValueAction(ValueEnum result)
{
    //irrelevant code
    ViewBag.Values = Enum.GetValues(typeof(ValueEnum))
                    .OfType<ValueEnum>()
                    .Select(x => new SelectListItem 
                        { 
                            Text = x.GetCustomAttribute<DescriptionAttribute>().Description,
                            Value = ((byte)x).ToString()
                        });
    return View();
}

Razor :

@using(Html.BeginForm())
{   
    @*irrelevant code*@

    @Html.DropDownList("valueEnum", (IEnumerable<SelectListItem>)ViewBag.Values, new { multiple="multiple", id="enumValues" })
    @*Here would be stored result value for this flagged enum*@
    <input type='hidden' name='resultValue' id='hidden-enum-value' />

    @*irrelevant code*@
    <input type="submit" value="Submit" />
}

JS:

$(function() {
    $('form').submit(function() {
        var vals = $('#enumValues').val();
        var result = 0;

        for(let i = 0; i < vals.length; i++) {
            result += Number(vals[i]);
        }

        $('#hidden-enum-value').val(result);
    });
});

发布方法:

[HttpPost]
public ActionResult ValueAction(ValueEnum resultValue)
{
    //irrelevant code
    return View();
}

关于c# - 枚举的多选下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35794864/

相关文章:

c# - C# 中的 WebDriver(使用 Windows 和同步)

c# - 使用 SSL/TLS 从 url 获取图像

c# - 如何在 c#.net3.5 中设置焦点并在按钮单击事件上启动已经运行的应用程序?

asp.net-mvc - ASP.NET MVC 远程属性方法参数始终传递 null

c# - MVC 4 : View is not rendered with the correct data from a List<> in the Model

c# - linq toentity datediff 单元测试失败,但 sql 数据失败

c# - 如何从模型状态显示错误消息及其字段

javascript - 在客户端而不是服务器上将 PDF 转换为字节

javascript - 使用 javascript/jquery 从数据库格式化日期的正确方法

c# - 在 MVC 中编写 HTML 扩展