ASP.NET mvc: перемещение элементов между двумя списками - PullRequest
2 голосов
/ 19 августа 2011

В настоящее время у меня есть 2 списка, связывающих данные из базы данных на мой взгляд ... Я использовал пользовательскую Viewmodel, и она не является строго типизированной. Вот код:

 <%@ 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>

  <div class="editor-field">
    <%: Html.ListBox("IndexStudentsNormal", Model.NormalStudentsList)%>
  </div>

  <input type="submit" name="add" 
                          id="add" value=">>" />
  <br />
  <input type="submit" name="remove" 
                          id="remove" value="<<" />

  <div class="editor-field">
    <%: Html.ListBox("IndexStudentsNoClass", Model.StudentsNoClassList)%>
  </div>

  <input type="submit" name="apply" id="apply" value="Save!" />
</asp:Content>

Что ж, теперь я хочу перемещать элементы между этими двумя списками с помощью двух кнопок (>>) и (<<). И когда пользователь нажимает кнопку «Применить», изменения должны быть записаны в базу данных. </p>

StudentModel:

namespace ProjectenII.Models.Domain
{
    public class StudentModel
    {
        public IEnumerable<SelectListItem> NormalStudentsList { get; set; }
        public IEnumerable<SelectListItem> StudentsNoClassList { 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);
        }

Так как я могу получить выбранное значение одного списка и сохранить его в другом? И после этого изменения должны быть записаны в базу данных. Итак, ОБНОВЛЕНИЕ базы данных. Могу ли я использовать modelstate для обновления значений в базе данных?

Я не очень хорош в asp.net mvc, так что я надеюсь, что вы меня поняли ...

Заранее спасибо !!

Ответы [ 2 ]

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

Там была статья об использовании двухстороннего списка множественного выбора jQuery (который выполняет перемещение двух блоков между элементами блоков). Он больше не существует, но суть его ниже (на примере моего двустороннего многофункционального плагина , который не является частью поддерживаемого программного обеспечения) ...

Он описывает Модель, включая получение выбранных значений, Контроллер и Представление в простых терминах.

Вам понадобится свойство в модели, которое может принимать выбранные значения, которые будут отправлены обратно как строка, а не как SelectListItem (то есть значение из выбранных параметров: <option value="student1" selected>Mr Student One</option>

public class StudentModel
{
    public IEnumerable<SelectListItem> NormalStudentsList { get; set; }
    public IEnumerable<SelectListItem> StudentsNoClassList { get; set; }
    public IEnumerable<string> StudentsSelected { get; set; }
}

А затем применить ListBox к этому свойству

<%= Html.ListBox("StudentsSelected", ...
0 голосов
/ 19 августа 2011

Сохраняя его в MVC, пост обратно не отправляет все опции, только выбранные.1. Вы можете использовать ajax / json, чтобы сообщить, что amove был сделан.Отправьте параметр и в какой список он был перемещен, а затем вы можете обновлять базу данных при каждом перемещении.2. Вы можете записать все параметры (при отправке) в скрытую строку поля (разделитель запятой), а затем обработать функцию Post из списка 2

Вот некоторая помощь в части jquery. Перемещение элементов в двойных списках

...