2011-08-19 47 views
2

目前,我有2个列表框在我的视图中绑定数据库中的数据......我使用了自定义Viewmodel,并且它不是强类型的。 下面的代码:ASP.NET mvc:在两个列表框之间移动项目

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

好了,现在我想用两个按钮(>>)和(< <),当用户点击应用按钮,必须记录的更改这两个列表框之间项在数据库中。

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的非常好,所以我希望你明白我的意思...提前

谢谢!

+0

试试这个https://www.codeproject.com/script/Membership/LogOn.aspx?rp=http%3a%2f%2fwww.codeproject.com %2fArticles%2f136730%2fASP-NET-MVC-Basics-Working-with-ListBoxes&download = true –

回答

0

将它保存在MVC中,回发不会发送所有选项,只有选中。 1.您可以使用ajax/json报告已创建了amove。发送选项并将其移至哪个列表,然后您可以在每次移动时更新数据库。 2.您可以将所有选项(提交时)写入隐藏字段字符串(逗号delim),然后让Post函数处理保存2个列表。

继承人一些帮助与jQuery的一部分。 Moving items in Dual Listboxes

+0

Oka y,所以如果我将所有选项写入隐藏字段?我怎样才能做到这一点? – Lorenzo

1

关于使用jQuery双面多选择列表(它框之间的两箱运动项目的东西)的文章。它不再存在,但它的实质在下面(基于我的two sided multi-select plugin示例,它不是一个支持的软件)...

它描述了模型,包括获取选定的值,控制器和查看简单的条款。

您需要对可能接受选定值模型,该模型将被送回作为一个字符串,而不是作为一个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; } 
} 

然后让列表框应用到这个属性

<%= Html.ListBox("StudentsSelected", ... 
+0

没问题,所以当我选好学生时,我下一步该怎么办?将它们附加到第二个列表框? – Lorenzo

+0

这就是jQuery插件的作用 - 当页面加载时,它将第一个框中的所有选定项目移动到第二个框中。第二个框中的所有内容都将被提交为选定的选项。 – Fenton

+0

这两个链接都不再可用 – RandomUs1r

相关问题