【问题标题】:How do I pass a whole list data from a listbox without & with selection to controller?如何将列表框中的整个列表数据传递给控制器​​?
【发布时间】:2014-07-22 04:02:13
【问题描述】:

我可以完美地显示列表框上的数据,但我不知道如何在单击提交按钮后将列表框数据(有和没有选择)传递/发布回控制器。不使用jquery有什么办法吗?

这是我在视图上的代码:

<%-- I have no idea what and how to pass data back to controller --%>
<%using (Html.BeginForm()){ %>
<%=Html.ListBoxFor(m => m.AvailableGroups, Model.AvailableGroup)%>
<%=Html.ListBoxFor(m => m.AssignGroups, Model.AssignGroup)%>
<input type="submit" value="Save" />    
<% } %>

在模型中我这样声明变量:

 public IEnumerable<string> AvailableGroups { get; set; }
 public IEnumerable<SelectListItem> AvailableGroup { get; set; }

 public IEnumerable<string> AssignGroups { get; set; }
 public IEnumerable<SelectListItem> AssignGroup { get; set; }

这是发布操作:

 [HttpPost]
 public ActionResult Update(EnrollGroup enrollgroup) { //I have no idea what kind of parameter type should I get in to this action
  //Perform my code here
 }

解决方案

由于我找不到任何方法来返回列表框的整个列表,因此我分配了一个 jquery 函数来在提交表单之前选择所有数据。我更改了提交按钮代码下的代码:

<input type="submit" value="Save" onclick="selectAllItem()"/>    

它会在AssignGroups变量下作为模型返回控制器。

【问题讨论】:

  • 想知道你为什么提到“有什么方法可以在不使用 jquery 的情况下做到这一点?”???通常在发布后,您将在控制器操作中获取模型数据。您无法在后期操作中接收数据吗?你能显示你的帖子操作吗?
  • 我在互联网上搜索的大部分资源都是使用 jquery 将数据传回控制器。在使用 jquery 时,我在验证伪造令牌时遇到了困难。目前我无法回发到控制器,我不知道应该在发布操作功能上设置什么参数以及如何回发。我需要在列表框中获取整组数据。

标签: c# jquery asp.net-mvc model-view-controller listbox


【解决方案1】:

由于您使用 ListBoxFor 并且它与模型中的对象有关,因此应该在您的 HTTPPost 中捕获该对象

【讨论】:

  • 我试图捕获数据。但它只发生在我选择了 boxlist 中的一些项目的地方。我希望获得整个列表,而不仅仅是选定的项目。感谢回复
  • 如果我没有选择任何东西。 AvailableGroups,AvailableGroup,AssignGroups,AssignGroup 的变量为空。在我在列表框中选择了一些项目之后。 AssignGroups 包含的数据量与我在视图中选择的数据量相同。
【解决方案2】:

以下代码选择整个列表。只需在 ajax 调用之前添加即可。

$("#myList option").prop("selected", "selected");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多