ASP.NET mvc: HOWTO: обновлять базу данных после редактирования списка множественных выборок (список) - PullRequest
2 голосов
/ 19 августа 2011

Я действительно застрял в этом: у меня есть два списка, заполненных из базы данных. Я хочу скопировать элементы из одного списка в другой. Затем изменения должны быть сохранены в базе данных.

Вот что у меня есть:

Пользовательская модель представления:

public class StudentModel
    {
        public IEnumerable<SelectListItem> NormalStudentsList { get; set; }
        public IEnumerable<SelectListItem> StudentsNoClassList { get; set; }
        public string[] NormalSelected { get; set; }
        public string[] NoClassSelected { get; set; }
        public string Save { get; set; }
    }

Контроллер:

public ActionResult IndexStudents(Docent docent, int id, int klasgroepid)
        {
            var studentModel = new StudentModel
            {
               NormalStudentsList = docent.GeefStudentenNormaalList(id, klasgroepid),
               StudentsNoClassList = docent.GeefStudentenNoClassList(id, klasgroepid)
            };

            return View(studentModel);
        }

        [HttpPost, Authorize]
        public ActionResult IndexStudentsResult(StudentModel model, string add, string remove)
        {
            ModelState.Clear();
           (if! string.IsNullOrEmpty(add))
               //update database
            SaveState(model);
            return View(model);
        }

а как мне обновить базу ?? Используя UpdateModel ()? или я должен работать с FormCollection? Но мне нужна форма FormCollection для работы с UpdateModel () ... Таблица Студенты имеет поле с именем «ClassID», и при копировании строк из 1 списка в другой, идентификатор должен измениться с текущего ClassID на «0».

Как я могу это сделать? Я действительно застрял в этом ... надеюсь, вы можете помочь.

Это мой взгляд

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"  Inherits="System.Web.Mvc.ViewPage<ProjectenII.Models.Domain.StudentModel>"%>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    IndexStudents
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>IndexStudents</h2>

  <%using (Html.BeginForm()) { %>
    <%=Html.ListBoxFor(model => model.NormalSelected, new MultiSelectList(Model.NormalStudentsList, "StudentNummer", "Naam", Model.NormalSelected), new { size = "6" }); %>

    <input type="submit" name="add" 
                          id="add" value=">>" /><br />
    <%=Html.ListBoxFor(model => model.NoClassSelected, new MultiSelectList(Model.StudentsNoClassList, "StudentNummer", "Naam", Model.NoClassSelected)); %>
  <% } %>

  <%=Html.HiddenFor(model => model.Save) %>
  <input type="submit" name="apply" id="apply" value="Save!" />
</asp:Content>

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

Ваша проблема связана с возвратом списка из представления ... проверьте это сообщение Филом Хааком:

Привязка модели к списку

Здесь вы можетевидите, я столкнулся с подобной проблемой.В моем случае используются флажки для выбора элементов в списке.Предложенное решение направило меня в правильном направлении, но я использовал не то, что я использовал, пост Фила.

My Post

Надеюсь, это поможет.*

0 голосов
/ 16 марта 2017

Мы также можем добиться использования помощника редактора, но работа всех элементов мультиселекта, выбранных перед отправкой, будет работать:

$("#NormalSelected option").prop("selected", true);

Это передаст элементы множественного списка в контроллер.

...