gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:38:46 25 4
gpt4 key购买 nike

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

我有一个这样的枚举:

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/

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