2011-08-19 86 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

相關問題