简体   繁体   English

@ Html.ListBox用于用法和创建问题

[英]@Html.ListBoxFor usage and creation questions

I have a webpage with 2 list box ( list1, list2 ), I can shift items from one listbox to the other and back. 我有一个带有2个列表框的网页( list1,list2 ),我可以将项目从一个列表框移到另一个列表框,然后再移回另一个列表框。 When I click on the submit button, I want to return all the items value in list2 to the httppost method. 当我单击提交按钮时,我想将list2中的所有项目值返回给httppost方法。

I have 3 problems: 我有3个问题:

  1. How to definite the property for the selected list? 如何确定所选列表的属性?
  2. How to have a initial empty list (for list2 )? 如何有一个初始的空列表(对于list2 )? list1 has populated items? list1是否已填充项目?
  3. How to return all of list2 items to model, when submit button is clicked ? 单击提交按钮时,如何将所有list2项目返回模型?

Model: 模型:

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

Controller: 控制器:

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");
}

View: 视图:

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

1) How to definite the property for the selected list? 1)如何确定所选列表的属性?
@Html.ListBoxFor(x => x.SelectedOptions, new MultiSelectList(Model.SelectedOptionList), new { id = "list2", Multiple = "multiple", Size = 15, style = "width: 100%;" })

2) How to have a initial empty list (for list2)? 2)如何有一个初始的空列表(对于list2)? list1 has populated items. list1已填充项目。 In controller set an empty list testModel.SelectedOptionList = new List<SelectListItem>(); 在控制器中设置一个空列表testModel.SelectedOptionList = new List<SelectListItem>();

3) How to return all of list2 items to model when submit button is clicked 3)单击提交按钮时如何将所有list2项目返回模型
Probably you need to set all the items in list2 as selected (using jquery) before submitting. 提交之前,可能需要将list2中的所有项目设置为选中状态(使用jquery)。 All the selected items in list2 items will bind to TestModel.SelectedOptions on submit. list2项目中的所有选定项目将在提交时绑定到TestModel.SelectedOptions。

Please look around, there are a lot of answers already in SO related to Html.ListBoxFor. 请环顾四周,SO中已经有很多与Html.ListBoxFor相关的答案。 for eg Challenges with selecting values in ListBoxFor 例如,在ListBoxFor中选择值的挑战

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM