首页 > 解决方案 > asp.net core 下拉列表未设置所选值

问题描述

我有一个引导下拉菜单,我正在使用标签助手输入渲染值并在发布时读取它们。下面是代码

asp-for="CfgType" -- 值设置为 SIN 或 UN 基于将视图设置为选定值 -- 在提交页面时,我需要从 CfgType 属性中获取下拉列表的选定值。

                <div class="form-row">
                    <div class="col-md-12">
                        <div class="form-group form-group--float">
                            <div class="form-group form-group--float">
                                <select id="dwType" class="form-control  custom-select" asp-for="CfgType">
                                    @if(Model.VehFlg)
                                    {
                                        <option value="SIN">Serial Num</option>
                                    }
                                    
                                    @if(Model.VinFlg)
                                    {
                                        <option value="UN">Unit Number</option>
                                    }

                               </select>
                                <label> Configuration Type</label>
                                <div class="invalid-tooltip"><span asp-validation-for="CfgType"></span></div>
                            </div>
                            <i class="form-group__bar"></i>
                        </div>

下面是如何尝试使用控制器检索值

//现在 fvIdentViewModel.CfgType 为空

  [Route("/fv-identification/Save"), HttpPost, ValidateAntiForgeryToken]
 public IActionResult Save(FleetVehicleIdentificationViewModel fvIdentViewModel)
        {

}

标签: asp.net-coreasp.net-mvc-4twitter-bootstrap-3

解决方案


这是一个工作演示:

模型:

public class FleetVehicleIdentificationViewModel
{
    public string CfgType { get; set; }
    public bool VehFlg { get; set; }
    public bool VinFlg { get; set; }
}

查看(索引.cshtml):

@model FleetVehicleIdentificationViewModel
<form action="/fv-identification/Save" method="post">

    @Html.AntiForgeryToken()

    <div class="form-row">
        <div class="col-md-12">
            <div class="form-group form-group--float">
                <div class="form-group form-group--float">
                    <select id="dwType" class="form-control  custom-select" asp-for="CfgType">
                        @if (Model.VehFlg)
                        {
                            <option value="SIN">Serial Num</option>
                        }

                        @if (Model.VinFlg)
                        {
                            <option value="UN">Unit Number</option>
                        }

                    </select>
                    <label> Configuration Type</label>
                    <div class="invalid-tooltip"><span asp-validation-for="CfgType"></span></div>
                </div>
                <i class="form-group__bar"></i>
            </div>
            <div>
                <input type="submit" value="create" />
            </div>
        </div>
    </div>
</form>

控制器:

为了便于测试,我手动设置了值以呈现您的Index.cshtml

public IActionResult Index()
{
    var model = new FleetVehicleIdentificationViewModel()
    {
        VehFlg = true,
        VinFlg = false
    };
    return View(model);
}

您的帖子操作:

[Route("/fv-identification/Save"), HttpPost, ValidateAntiForgeryToken]
public IActionResult Save(FleetVehicleIdentificationViewModel fvIdentViewModel)
{
    //do your stuff...
}

结果: 在此处输入图像描述


推荐阅读