MVC DropDownListFor Редактировать модальное не возвращает SelectedValue - PullRequest
2 голосов
/ 17 марта 2019

У меня есть поле DropDownListFor в моем модальном всплывающем окне «Редактировать», которое является частичным представлением.Поле Тип в моей модели является целым.У меня отключено поле, поскольку я не хочу, чтобы пользователь мог редактировать это поле.

<div class="form-group">
   @Html.LabelFor(model => model.Type)
   <div class="col-md-10">
      @Html.DropDownListFor(model => model.Type, ViewData["TypeList"] as IEnumerable<SelectListItem>, new { @disabled = "disabled" })
      @Html.HiddenFor(model => model.Type)
   </div>
</div>

Данные редактирования заполняются с помощью комбинации возврата JsonResult и JQuery.

<script type="text/javascript">
    function showModalEdit(learningObjectId) {
        $.ajax(
            {
                url: '@Url.Action("Edit")/' + learningObjectId,
                //context: JSON.stringify({ id: moduleId })
            })
            .done(function (data) {
                if (data.LearningObject && data.LearningObject.Name) {
                    document.getElementById("LearningObjectID").value = learningObjectId;
                    document.getElementById("Name").value = data.LearningObject.Name;
                    document.getElementById("DisplayName").value = data.LearningObject.DisplayName;
                    document.getElementById("Description").value = data.LearningObject.Description;
                    document.getElementById("Type").value = data.LearningObject.TypeCode;
                    document.getElementById("ImportID").value = data.LearningObject.ImportID;

                    for (var i = 0; i < data.Tags.length; i++) {
                        addTag('Tags', 'tagInputEdit', 'tagListEdit', 'tagCountEdit', data.Tags[i].Name);
                    }
                }
            });
    }
</script>

public JsonResult Edit(int? id)
{
      LearningObject learningObject = _db.LearningObjects.Find(id);
      var tags = (from t in _db.Tags
                  join lot in _db.LearningObjectTags on t.TagID equals lot.TagID
                  where lot.LearningObjectID == id.Value && lot.Active == true
                  select new { Name = t.Name }).ToList();

       return Json(new { LearningObject = learningObject, Tags = tags }, JsonRequestBehavior.AllowGet);
}

Проводя исследование, я прочитал, что лучший способ вернуть значение отключенного DropDownListFor в контроллер - это скрытое поле, которое я реализовал в своем частичном представлении.Когда я нажимаю кнопку Изменить модальное, в отключенном DropDownListFor отображается правильное значение, но когда я отправляю форму, модель возвращается к контроллеру со значением 0.

Кто-нибудь может понять, почему это происходит?

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