【问题标题】:Model binding to list in MVC模型绑定到 MVC 中的列表
【发布时间】:2012-09-19 13:50:36
【问题描述】:

我无法在服务器端检索简单列表。谁能指出我正确的方向?

public class TestList
{
    public string id { get; set; }
    public string name { get; set; }
    public string location { get; set; }
}

表格:

@model List<SampleMVC4App.Controllers.TestList>
@{
    ViewBag.Title = "Index";
}
<h2>
    Index</h2>
@using (Html.BeginForm())
{           
    <input name="cust" value="1" type="hidden" />
    <input name="[1].id" value="de107502-284d-459b-80a1-762ce0860cd8" type="hidden" />    
    <input name="[1].name" value="test1" type="hidden" />    
    <input name="[1].location" value="location1" type="hidden" />    
    <a id="AddAnother" href="#">Add</a>
    <input type="submit" value="submit" />
}

控制器:

[HttpPost]
public ActionResult Edit(ICollection<TestList> cust) **<---Null**
{
   return View();
}

【问题讨论】:

  • 您输入字段的名称看起来很奇怪。恐怕他们是不正确的。
  • 我们可以看看您是如何生成表单的吗?包括呈现视图的动作和视图本身?
  • 感谢您的回复。我已经发布了表单标记。我正在测试功能,所以只渲染了 View()。我正在尝试使用静态标记,因为我没有成功绑定到对象。类似于 Phil Haack 在他的示例中所做的。
  • 我建议将您的表单更改为使用(相当于 Razor 的)&lt;%= Html.TextBoxFor( m =&gt; m[1].Name ) %&gt;,然后对其进行测试。
  • 戴,我正在尝试使用具有唯一 ID 的隐藏变量。通过使用索引,我能够检索它。

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

工作了几个小时后,我设法通过更改以下内容来解决问题

<input name="cust" value="1" type="hidden" />

<input name="Index" value="1" type="hidden" />

【讨论】:

【解决方案2】:

试试这个。 你的模型是对的。 在cshtml页面试试这个

 @model List<SampleMVC4App.Controllers.TestList>
    @{
        ViewBag.Title = "Index";
    }
    <h2>
        Index</h2>
    @using (Html.BeginForm())
    {           
        foreach(SampleMVC4App.Controllers.TestList tl in Model)
{
     @model.hiddenfieldfor () // Like this your list will be rendered.
}
    }

【讨论】:

    【解决方案3】:

    尝试使用 Edit(FormCollection fm) 从视图中获取所有表单元素。然后在您的 httpPost 操作中处理返回的变量。在查看返回的元素时,这将使调试变得更容易。

    我发现 Scott Allen 的这篇文章在我使用 HttpPOST 时很有帮助 http://odetocode.com/blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多