c# - 将 Ajax 值发布到控制器时丢失完整的模型
问题描述
我想要做的是有 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 值。
我尝试了几件事,但无法让它们在我的情况下工作(我可能做错了什么,但不知道是什么......)
谁能帮助我以正确的方式实现这一目标,因为我看到了很多方法,但我希望必须有一种优雅的方式将所有内容绑定到 1 个模型,而无需使用 javascript/Jquery?
亲切的问候!
解决方案
List<SelectListItem>
不能在单个隐藏变量中定义
推荐阅读
- swift - 如何从 UIPageViewController 打开 View 并返回到 UIPageViewController
- ios - 为具有范围的 NSAttributedString 添加属性
- elasticsearch - 查询 elasticsearch 以使所有分析的 ngram 标记匹配
- java - 将使用 python 脚本的 Java Web 应用程序部署到 Azure
- javascript - JavaScript:从用户代理的一部分创建变量
- c++ - 如何使用 Win32 API 从 Excel VBA 的非“单线程单元”线程调用 InternetGetProxyInfo
- python-3.x - Python3 tkinter - 带有类的新窗口为空白+原始窗口中的新窗口内容
- json - 在 Swift 上访问变量 do-catch 语句
- php - php 文件中未捕获的异常“PDOException”
- excel - Excel:如果单元格1为空,则在单元格2中显示“NA”,否则显示带有一些选项的下拉列表