gpt4 book ai didi

asp.net-mvc - 绑定(bind)两个或多个集合的模型

转载 作者:行者123 更新时间:2023-12-02 00:36:29 26 4
gpt4 key购买 nike

有没有人使用 Phil Haack 在这里发布的代码绑定(bind)两个或多个集合的运气模型:Model Binding To A List

例如,我有以下代码。

public class Book {
public string Name { get; set; }
}
public class Author {
public string Name { get; set; }
}


public ActionResult Index(List<Book> books, List<Author> authors) {
// Will never model bind two collections.
}

我的 HTML 是:

<input type="hidden" name="books.index" value="1" />
<input type="text" name="books[1].Name" />

<input type="hidden" name="books.index" value="2" />
<input type="text" name="books[2].Name" />

<input type="hidden" name="authors.index" value="1" />
<input type="text" name="authors[1].Name" />

<input type="hidden" name="authors.index" value="1" />
<input type="text" name="authors[1].Name" />

我得到的异常是:

The parameters dictionary contains an invalid entry for parameter 'authors' for method 'System.Web.Mvc.ActionResult Index(System.Collections.Generic.List1[Book], System.Collections.Generic.List1[Author])' in 'HomeController'. The dictionary contains a value of type 'System.Collections.Generic.List1[Book]', but the parameter requires a value of type 'System.Collections.Generic.List1[Author]'. Parameter name: parameters

我做错了什么还是 ASP.NET MVC 不支持它?

最佳答案

您的问题出在其他地方,我无法重现。以下对我来说很好用:

型号:

public class Book
{
public string Name { get; set; }
}
public class Author
{
public string Name { get; set; }
}

Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult Index(List<Book> books, List<Author> authors)
{
return View();
}
}

查看:

<% using (Html.BeginForm()) { %>
<input type="text" name="books[0].Name" value="book 1" />
<input type="text" name="books[1].Name" value="book 2" />

<input type="text" name="authors[0].Name" value="author 1" />
<input type="text" name="authors[1].Name" value="author 2" />

<input type="submit" value="OK" />
<% } %>

它成功地将值绑定(bind)回 POST 操作。


更新:

我确认这是一个 bug in ASP.NET MVC 3 RC2这将在 RTM 中修复。作为解决方法,您可以将以下内容放入 Application_Start:

ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider();

关于asp.net-mvc - 绑定(bind)两个或多个集合的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com