我想做的是有2个列表框(左,右),其中左边将具有所有产品实体,但合同实体中存在的产品实体以及合同实体中右侧的产品。
我遇到的问题是,当我传递1个参数(字符串)时,我可以在控制器中正确接收它们,但是每当我将模型作为第二个参数传递时,我都会完全松开模型。这就是我所拥有的:
控制器:
public ActionResult EditContract(ContractViewModel model, string selectedProducts)
视图(Javascript / JQuery):
function GetSelectedProducts() {
var listbox = document.getElementById("productsForContractListbox");
var txt = "";
var i;
for (i = 0; i < listbox.length; i++) {
txt = txt + "\n" + listbox.options[i].text;
}
$('#SelectedProductForContracts').val(txt);
var selectedProducts = $('#SelectedProductForContracts').val();
var model = $('form').serialize;
$.post('@Url.Action("EditContract", "Contract")', { "model": model, "selectedProducts": selectedProducts});
}
HTML帮助器列表框:
// listbox for my contract products
@Html.ListBoxFor(c => c.Contract.Products, productsForContract, new { ID = "productsForContractListbox", @class = "form-control" })
// listbox where all products except the ones in my contract are loaded
@Html.ListBox("allProducts", allProducts, new { ID = "allProductsListbox", @class = "form-control" })
针对我的模型中的SelectedProductForContracts的HiddenFor:
@Html.HiddenFor(c => c.SelectedProductForContracts, new { ID = "SelectedProductForContracts", name = "SelectedProductForContracts" })
型号:
[HiddenInput(DisplayValue = false)]
public List<SelectListItem> SelectedProductForContracts { get; set; }
当帖子数据仅包含selectedProducts时,我得到了我的值,但是丢失了我的模型,当我添加模型时,我得到了我的模型,但是丢失了我的selectedProducts值。
我尝试了类似THIS的几种操作,但无法以我的情况进行工作(我可能做错了一些,但不知道是什么...)
有人能帮助我找到实现此原因的正确方法吗?我看到了很多方法,但我希望必须有一种无需使用javascript / Jquery就能将所有内容绑定到1个模型的优雅方法?
亲切的问候!
答案 0 :(得分:1)
List<SelectListItem>
无法在单个隐藏变量中定义