MVC4获取文本和列表的列表框价值属性

时间:2013-12-25 09:19:14

标签: asp.net-mvc-4 asp.net-mvc-viewmodel html.listboxfor

在我的MVC4 EF5应用程序中,我使用了2个列表框。每个列表框都绑定到我的视图模型的List属性。

当我提交一个from时,我想获取所有列表框项目(我的意思是所有SelectedListItem - Selected,Text,Value)。

这就是我这样做的方式(没有成功......)

我的视图模型:

public class PriorityViewModel
{

    public List<SelectListItem> lst_fromCEID { get; set; }
    public List<SelectListItem> lst_C2C { get; set; }

    public PriorityViewModel()
    {
        lst_C2C = new List<SelectListItem>();
        lst_fromCEID = new List<SelectListItem>();
    }
}

我的行动:

public ActionResult Index()
    {
        var model = new PriorityViewModel();

        var c2c_ceid_source = _unitOfWork.ActionRepository.GetC2C_SourceCEID();
        model.lst_fromCEID = _unitOfWork.EntityRepository.GetEntitiesByC2CSource(c2c_ceid_source);

        return View(model);
    }

    public ActionResult UpdatePriority(PriorityViewModel model)
    {
        //save manual changes to DB
        SaveManualPriorityToDB(model);
        ...
    }

我的观点:

@model TRM.Models.ViewModel.PriorityViewModel

@{
    ViewBag.Title = "Index";
}


@*@Html.Action("Run");*@


@using (Html.BeginForm("UpdatePriority", "Priority", FormMethod.Post))
{
    @Html.Hidden("demoQuantity", Model.demoQuantity)
    @Html.Hidden("installQuantity", Model.installQuantity)
    @Html.Hidden("CIP_Quantity", Model.CIP_Quantity)
    @Html.Hidden("C2C_Quantity", Model.C2C_Quantity)
    <table>

        <tr>
            <td>
                From CEID
                @Html.ListBoxFor(model => model.lst_fromCEID, @Model.lst_fromCEID, new { width = "50px" })
            </td>

            <td style="width:50px">
                <input id="btnRemoveAllC2C" type="button" value=" << " onclick="removeallItemsC2C();" />
                <input id="btnAddAllC2C" type="button" value=" >> " onclick="addallItemsC2C();" />
                <input id="btnAddC2C" type="button" value="  > " onclick="addItemC2C();" />
                <input id="btnRemoveC2C" type="button" value="  < "  onclick="removeItemC2C();" />
            </td>

            <td style="width:50px">
                C2C
                @Html.ListBoxFor(model => model.lst_C2C, new MultiSelectList(Model.lst_C2C), new { width = "50px" })
            </td>
        </tr>

        <tr>
            <td>
                <h2>Install & Orphan</h2>
            </td>
        </tr>


    </table>

    <input type="submit" value="Run Transition!" onclick="SelectAllItems()"/>
}

@section scripts {
    <script src="~/Scripts/MyScripts/PriorityScript.js"></script>
}

我的Js文件:

function addItemC2C() {
    $("#lst_fromCEID option:selected").appendTo("#lst_C2C");
    $("#lst_C2C option").attr("selected", false);
}

function addallItemsC2C() {
    $("#lst_fromCEID option").appendTo("#lst_C2C");
    $("#lst_C2C option").attr("selected", false);
}

function removeItemC2C() {
    $("#lst_C2C option:selected").appendTo("#lst_fromCEID");
    $("#lst_fromCEID option").attr("selected", false);
}

function removeallItemsC2C() {
    $("#lst_C2C option").appendTo("#lst_fromCEID");
    $("#lst_fromCEID option").attr("selected", false);
}

如果我将viewModel属性设置为List,则可以在按钮提交时获取列表框文本。但这对我来说还不够,我需要文字和价值。

THX ..

0 个答案:

没有答案