更新 真正的问题分为两部分。
模型需要属性,而不是字段(即获取和设置)
在调用Html.BeginCollectionItem(“Something”)时,使确定某些内容与类名或属性名称不匹配。它真的搞砸了剧本。
希望这可以为别人解除我刚才必须处理的悲痛。
*
我正在尝试实施Steven Sanderson的博文here中的代码 但我的数据结构不同,集合在一个包装类中。
尽管我付出了最大努力,但我的帖子总是空洞的。我做错了什么?
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new GiftWrapper();
model.Id = 46;
model.Gifts= new[] {
new Gift { Name = "Tall Hat", Price = 39.95 },
new Gift { Name = "Long Cloak", Price = 120.00 },
}.ToList();
return View(model);
}
[HttpPost]
public ActionResult Index(GiftWrapper model)
{
return View("Completed", model);
}
public ViewResult Add()
{
return View("GiftEditorRow", new Gift());
}
}
型号:
public class GiftWrapper
{
public int Id { get; set; }
public IEnumerable<Gift> Gifts;
}
public class Gift
{
public string Name { get; set; }
public double Price { get; set; }
}
查看:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<EditorDemo.Models.GiftWrapper>" %>
<%@ Import Namespace="EditorDemo.Helpers"%>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<% using(Html.BeginForm()) { %>
<div id="editorRows">
<% foreach (var item in Model.Gifts)
Html.RenderPartial("GiftEditorRow", item);
%>
</div>
<%= Html.ActionLink("Add another...", "Add", null, new { id = "addItem" }) %>
<input type="submit" value="Finished" />
<% } %>
</asp:Content>
答案 0 :(得分:1)
将模型更改为:
public class GiftWrapper
{
public int Id { get; set; }
public IEnumerable<Gift> Gifts { get; set; }
}
public class Gift
{
public string Name { get; set; }
public double Price { get; set; }
}