MVC Dropdownlistfor возвращает нулевое выбранное значение - PullRequest
0 голосов
/ 11 июля 2019

Аналогично этому вопросу и многим другим, я не могу получить выбранное значение из моего @ 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);
    }
}

Мой ModelView выглядит так:

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; }
}

Раскрывающийся список заполнен правильно, и я могу выбрать нужный вариант, но когда я нажимаю кнопку отправки "Enregistrer", он возвращает пустое поле a_NEquipe в моей модели, даже если я правильно указал его в Html Helper:

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

Результат Debug.WriteLine("NEquipe : " + psvm.a_NEquipe); всегда равен нулю так:

NEquipe:

И если я добавлю тег [Required] в мою модель, проверка на стороне клиента заблокирует обратный вызов формы.

Как я могу получить выбранное значение в ожидаемой переменной a_NEquipe?

1 Ответ

1 голос
/ 11 июля 2019

Попробуйте указать поля «Текст» и «Значение» следующим образом:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...