【问题标题】:asp net mvc 3 post IEnumerable Modelasp net mvc 3 发布 IEnumerable 模型
【发布时间】:2011-11-20 17:44:52
【问题描述】:

我在此处的帖子中找到,这正是我想要的:将 IEnumerable 发布到我的控制器。

这是另一个帖子:

Foreach on IEnumerable property and CheckBoxFor in ASP.Net MVC

我尝试了一些非常接近此的方法:

http://www.vbforums.com/showthread.php?t=652925

但是当我提交表单时,控制器上的模型为空。

我在 ASP NET MVC 2 上找到了一种解决方案,使用 Html.BeginCollectionItem() ,但看起来他们在版本 3 上删除了这个帮助程序。(http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/)。

【问题讨论】:

  • BeginCollectionItem() 是该帖子的作者制作的辅助方法。不幸的是,从 cmets 的外观来看,他还没有更新它以使用 MVC3。

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


【解决方案1】:

只需使用字符串[]

<form action="url"> 
   <input type="text" name="data" />
   <input type="text" name="data" />
   <input type="text" name="data" />
   <input type="text" name="data" />
   <input type="text" name="data" />
</form>


public ActionResult Url(string[] data){

}

这对我个人来说适用于我的项目。虽然我还没有在复杂类型上尝试过,所以试一试)

【讨论】:

    【解决方案2】:

    我认为我们不能使用接口或抽象类作为操作方法的参数,因为 MVC 引擎将无法生成模型的实例。 但是,我认为自定义模型绑定器可以做到这一点。 检查如何为 IEnumerable 创建一个与此类似的自定义绑定器:

    http://davidhayden.com/blog/dave/archive/2008/09/08/CustomModelBinderMoreUIValidationASPNETMVC.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2021-04-23
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多