在我的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 ..