【问题标题】:How to Pass an IList<string> to Controller using Form Collection如何使用表单集合将 IList<string> 传递给控制器
【发布时间】:2016-11-07 10:40:44
【问题描述】:

我正在尝试将我的数据绑定到 IList 模型上。这是我认为的代码:

@using (Html.BeginForm("fncModify", "Main", FormMethod.Post, 
new { enctype = "multipart/form-data" }))

for (int x = 0; x < Model.lstEmployeeNames.Count; x++)
         {
             @Html.HiddenFor(y=>y.lstEmployeeNames[x])
         }

在我的模型视图上:

public IList<string> lstEmployeeNames { get; set; }

但是在我的控制器视图中,我的表单值总是返回一个空值:

 public ActionResult fncModify(FormCollection form)
    {
        IList<string> lstResult = new List<string>();
        //this always return null
        var lstResult = form["lstEmployeeNames"];
        return RedirectToAction("Index", "Main");
    }

你认为我在这里缺少什么?我打算将字符串列表从我的 Model.lstEmployeeNames 传递给我的控制器。

【问题讨论】:

  • 您是否检查过 FormCollection 方法对象。使用断点是否获得了任何价值。
  • @shashank 我得到空值。我不是我在这里想念的。但是如果数据不是集合,数据是可以的。
  • y=&gt;y.lstEmployeeNames[x] 将创建带有names 的元素,这些元素最后有一个[number],这是名称的一部分,您在阅读FormCollection 时似乎忽略了它们.为什么你仍然使用它而不是直接映射到List&lt;string&gt; lstEmployeeNames?
  • @GSerg 实际上我没有明白你的意思。如果我将数据作为 razor 中的 IList 放在不同的变量上,我将如何通过 FormCollection 传递它?
  • @WillyDavidJr 您将代码保留在视图中并将控制器过程更改为public ActionResult fncModify(List&lt;string&gt; lstEmployeeNames)。

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

根据用户 GSerg 的建议,我可以通过使用以下代码将 List 直接映射到我的 ActionResult 方法,将我的集合从我的 razor 视图传递到我的控制器中:

public ActionResult fncModify(List<string> lstEmployeeNames)

而不是使用这个:

public ActionResult fncModify(FormCollection form)

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    相关资源
    最近更新 更多