MVC 下拉列表返回空选定值



与这个问题和许多其他问题类似,我无法从我的@Html.Dropdownlistfor中检索所选值。但我认为我避免了通常的错误,所以我不确定我做错了什么。这是我的控制器:

public class AdministrationController : Controller
{
    public ActionResult ParamStatique()
    {
        ParamStatiqueViewModels psvm = new ParamStatiqueViewModels()
        {
            a_NEquipe = "1"
        };
        using (Dal dal = new Dal())
        {
            psvm.EquipesTravaux = dal.GetEquipesTravaux();
        }
        return View(psvm);
    }
    [HttpPost]
    public ActionResult ParamStatique(ParamStatiqueViewModels psvm)
    {
        Debug.WriteLine("NEquipe : " + psvm.a_NEquipe);
        using (Dal dal = new Dal())
        {
            psvm.EquipesTravaux = dal.GetEquipesTravaux();
        }
        return View(psvm);
    }
}

我的模型视图如下所示:

public class ParamStatiqueViewModels
{
    public List<EQUIPE_TRAVAUX> EquipesTravaux { get; set; }
    [Display(Name = "N° Équipe")]
    public string a_NEquipe { get; set; }
}

这是我的观点:

@using (Html.BeginForm("ParamStatique", "Administration", null, FormMethod.Post, new { id = "modalform", role = "form" }))
{
    <div class="modal-body" id="modal-body">
        <div class="form-group" id="aNEquipe">
            @Html.LabelFor(m => m.a_NEquipe, new { @class = "col-form-label" })
            @Html.DropDownListFor(m => m.a_NEquipe, new SelectList(Model.EquipesTravaux, "TRAV_SEQ", "TRAV_CODE"), new { @class = "form-control" })
            @Html.ValidationMessageFor(m => m.a_NEquipe, "", new { @class = "text-danger" })
        </div>
    </div>
    <div class="modal-footer">
        <button type="submit" class="btn btn-primary">Enregistrer</button>
    </div>
}

所以我的EQUIPE_TRAVAUX类,从 EF6 生成:

public partial class EQUIPE_TRAVAUX
{
    public short TRAV_SEQ { get; set; }
    public string TRAV_CODE { get; set; }
}

下拉列表已正确填充,我可以选择所需的选项,但是当我单击"注册者"提交按钮时,它会在我的模型中返回一个空a_NEquipe字段,即使我在 Html 帮助程序中正确指定了它:

@Html.DropDownListFor(m => m.a_NEquipe, new SelectList(Model.EquipesTravaux, "TRAV_SEQ", "TRAV_CODE"), new { @class = "form-control" })

Debug.WriteLine("NEquipe : " + psvm.a_NEquipe);的结果总是空的,如下所示:

尼奎普 :

如果我将 [必需] 标记添加到我的模型中,客户端验证将阻止表单回发调用。

如何在预期的变量a_NEquipe中检索选定的值?

尝试像这样指定"文本"和"值"字段:

@Html.DropDownListFor(model => model.a_NEquipe, Model.EquipesTravaux.Select(x => new SelectListItem { Text = x.TRAV_SEQ, Value = x.TRAV_CODE }), new { @class = "form-control"})

最新更新