首页 > 解决方案 > 下拉 asp.net core 设置选中项

问题描述

我需要在下拉菜单中设置所选项目

<div class="form-group">
    <label asp-for="Transaction.CCurrency" class="control-label"> Currency </label>

    @(Html.DropDownList("CurrencyDropDownList", Model.Currency, "--Choose currency--", new { @class = "form-control" }))

    <span asp-validation-for="CurrencyDropDownList" class="text-danger"></span>
</div>

我正在将其填充到控制器中

model.Currency = database.ZCurrency.Where(x => x.LActive == true).Select(c => new SelectListItem
                 {
                     Value = c.CCode.ToString(),
                     Text = c.CName,
                 });

这是在我的视图模型中

public IEnumerable<SelectListItem> Currency { get; set; }

但是,我不知道如何从我的数据库中设置它,我可以通过它访问 CCode 和 Cname,但不知道如何设置它。这是在我的 EDIT 表单中,我需要在其中查看我之前拥有的值并在需要时将其重新设置为另一个值。

非常感谢您,将不胜感激任何帮助。

标签: c#razorasp.net-core-mvc

解决方案


您可以在 SelectListItem 中将 selected 属性设置为 true,这将使该选项在页面中默认选中。我根据您的代码做了一个简单的演示,如下所示:

看法:

<div class="form-group">

    @(Html.DropDownList("CurrencyDropDownList", Model.Currency, "--Choose currency--", new { @class = "form-control" }))

</div>

模型:

public class ZCurrency
{
    public int CCode { get; set; }
    public string CName { get; set; }
}

public class ViewModel
{
    public IEnumerable<SelectListItem> Currency { get; set; }
}

控制器:

public IActionResult Index()
    {
        List<ZCurrency> currencies = new List<ZCurrency>
        {
            new ZCurrency{ CCode = 1, CName = "AAA" },
            new ZCurrency{ CCode = 2, CName = "BBB" },
            new ZCurrency{ CCode = 3, CName = "CCC" },
        };
        ViewModel viewModel = new ViewModel();
        viewModel.Currency = currencies.Select(c => new SelectListItem
        {
            Value = c.CCode.ToString(),
            Text = c.CName,
            Selected = c.CCode == 2 ? true: false
        });

        return View(viewModel);
    }

在这里,我通过将 Selected 设置为 true,将 CCode 为 2 (new ZCurrency{ CCode = 2, CName = "BBB" }) 的记录设置为选中项。


推荐阅读