2012-08-22 56 views
0

我有一個帶有2個列表框(list1,list2)的網頁,我可以將項目從一個列表框移到另一個列表框。當我點擊提交按鈕時,我想將list2中的所有項值返回給httppost方法。@ Html.ListBoxFor使用和創建問題

我有3個問題:

  1. 如何確定物業的選擇列表?
  2. 如何有一個初始的空列表(list2)? list1已填充項目?
  3. 如何返回所有list2項目模型,當提交按鈕被點擊?

型號:

public class TestModel 
{ 
    public List<SelectListItem> OptionList { get; set; } 
    public List<SelectListItem> SelectedOptionList { get; set; } 
    public string[] SelectedOptions { get; set; } 
} 

控制器:

private TestModel testModel = new TestModel(); 

public ActionResult TestPage() 
{ 
    ViewBag.Message = "Test Page"; 

    testModel.OptionList = new List<SelectListItem>(); 

    for (int i = 1; i <= 100; i++) 
    { 
     SelectListItem item = new SelectListItem(); 
     item.Text = "Option " + i.ToString(); 
     item.Value = item.Text; 

     testModel.OptionList.Add(item); 
    } 

    return View("TestView", testModel); 
} 

[HttpPost] 
public ActionResult TestPage(TestModel formModel) 
{ 
    testModel.SelectedOptionList = formModel.SelectedOptionList; 
    testModel.SelectedOptions = formModel.SelectedOptions; 

    //do something 
    return RedirectToAction("TestPage"); 
} 

查看:

@model EngineeringDataAnalysisGui.Models.TestModel 

@{ 
    ViewBag.Title = @ViewBag.Message; 
} 

@section Subtitle 
{ 
    @ViewBag.Message 
} 

<table width="100%"> 
@using (Html.BeginForm("TestPage", "RetrieveData", FormMethod.Post)) 
{ 
    <tr> 
     <td>Event List:</td> 
     <td>@Html.ListBox("lstEventSelection", Model.OptionList, new { id = "list1", Multiple = "multiple", Size = 15, style = "width: 100%;" })</td> 
    </tr> 
    <tr> 
     <td></td> 
     <td> 
      <table style="text-align:center; width: 100%"> 
       <tr> 
        <td id="buttonCol"> 
         <input type="button" id="btnAddAllEvent" title="Add All Events" onclick="moveAllOptions('list1','list2', true)" /> 
         <input type="button" id="btnAddEvent" title="Add Selected Events" onclick="moveSelectedOptions('list1','list2', true)" /> 
        </td> 
        <td id="buttonCol"> 
         <input type="button" id="btnRemoveEvent" title="Remove Selected Events" onclick="moveSelectedOptions('list2','list1', true)" /> 
         <input type="button" id="btnRemoveAllEvent" title="Remove All Events" onclick="moveAllOptions('list2','list1', true)" /> 
        </td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
    <tr> 
     <td>Selected Event List:</td> 
     @*Not sure how to add the listbox*@ 
     <td>@*Wrong*@@Html.ListBoxFor(x => x.SelectedOptions, Model.SelectedOptionList, new { id = "list2", Multiple = "multiple", Size = 15, style = "width: 100%;" })</td> 
    </tr> 
    <tr> 
     <td><input type="submit" value="submit" /></td> 
    </tr> 
} 
</table> 

回答

9

1)如何確定物業的選擇列表?
@Html.ListBoxFor(x => x.SelectedOptions, new MultiSelectList(Model.SelectedOptionList), new { id = "list2", Multiple = "multiple", Size = 15, style = "width: 100%;" })

2)如何有一個初始的空列表(對於list2)? list1已填充項目。 在控制器設置空單testModel.SelectedOptionList = new List<SelectListItem>();

3)如何返回所有的列表2項目模型時,點擊提交按鈕
也許你需要設置list2中的所有項目,如在提交前選擇(使用jQuery)。列表2項目中的所有選定項目將在提交時綁定到TestModel.SelectedOptions。

請環顧四周,在與Html.ListBoxFor相關的SO中已經有很多答案。例如Challenges with selecting values in ListBoxFor

+0

感謝您的回覆。 我已經測試過它,它的工作原理 – user1599647