llenar - ASP.NET mvc: mover elementos entre dos listboxes
llenar un dropdownlist mvc (2)
Actualmente tengo 2 listboxes que vinculan datos de una base de datos en mi vista ... He usado un Viewmodel personalizado y no está fuertemente tipado. Aquí está el código:
<%@ 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>
Bueno, ahora quiero mover elementos entre esas dos cajas de lista usando dos botones (>>) y (<<) Y cuando el usuario hace clic en el botón Aplicar, los cambios deben registrarse en la base de datos.
Modelo de estudiante:
namespace ProjectenII.Models.Domain
{
public class StudentModel
{
public IEnumerable<SelectListItem> NormalStudentsList { get; set; }
public IEnumerable<SelectListItem> StudentsNoClassList { get; set; }
}
}
Controlador:
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);
}
Entonces, ¿cómo puedo obtener el valor seleccionado de un listbox y guardarlo en el otro? Y luego, los cambios deben escribirse en la base de datos. Así que ACTUALIZA la base de datos. ¿Puedo hacer uso de modelstate para actualizar los valores en la base de datos?
No soy muy bueno en asp.net mvc, así que espero que me hayas entendido ...
¡¡Gracias por adelantado!!
Hubo un artículo sobre el uso de la Lista de Selección de Dos Caras de jQuery (que hace que los elementos de dos cajas que se mueven entre cajas sean todo). Ya no existe, pero la esencia de esto está abajo (basado en mi ejemplo de complemento de selección múltiple de dos lados , que no es una pieza de software compatible) ...
Describe el Modelo, incluyendo la obtención de los valores seleccionados, el Controlador y la Vista en términos simples.
Necesitaría una propiedad en el modelo que pudiera aceptar los valores seleccionados, que se enviarían de vuelta como una cadena, en lugar de como un elemento SelectListItem (es decir, el valor de las opciones que se seleccionan: <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; }
}
Y luego haga que el ListBox se aplique a esta propiedad
<%= Html.ListBox("StudentsSelected", ...
Al guardarlo en MVC, la publicación posterior no envía todas las opciones, solo la seleccionada. 1. Podrías usar ajax / json para informar que amove se hizo. Envíe la opción y a qué lista se movió, y luego puede actualizar la base de datos en cada movimiento. 2. Puede escribir todas las opciones (en el envío) en una cadena de campo oculto (delimitación de comas), y luego hacer que la función de publicación administre las 2 listas.
Aquí hay algo de ayuda con la parte jquery. Mover elementos en Dual Listboxes