gpt4 book ai didi

asp.net-mvc-3 - .NET MVC - 一次提交多个相同类型的模型

转载 作者:行者123 更新时间:2023-12-05 00:03:20 25 4
gpt4 key购买 nike

我想我有一个非常简单的场景,但似乎无法掌握如何在 .NET 的 MVC 框架中做到这一点。简而言之,这是一种具有排名的表格。我希望在一页上列出每个人的姓名和姓名旁边的文本框。这是(Razor)Html 的样子:

@using (Html.BeginForm()) {
<fieldset>
@foreach (var b in Model.Ballots) {
<p>
<label>@b.Person.FullName</label>
@Html.TextBox("Rank")
@Html.ValidationMessage("Rank")
</p>
}
</fieldset>
<input type="submit" value="Vote" />

}

选票是一个简单的对象,有一个人和一个排名:
public class Ballot {
public Person Person { get; set; }
[Range(1, 6, ErrorMessage="The voting range is 1 through 6")]
public int Rank { get; set; }
}

这是我的 Controller 处理表单提交的方法,但它永远不会被调用。
[AcceptVerbs("POST")]
public ActionResult Vote(IEnumerable<Ballot> ballots) {

return View("BallotComplete");
}

如何迭代表单提交回服务器的所有模型?

最佳答案

我使用 Customer 对象做了一个简单的例子,但我认为它是相似的。请注意表单字段的标记方式。以 Controller 中 Action 的参数名称为前缀。需要将索引视为集合。您的可能稍微复杂一些,因为您有一个嵌套类。 (选票内的人)。我认为通过为表单字段做 customer[@counter].Person.Id 会起作用。对不起,我没有选票的例子。 :)

这将是 View 的相关部分:

@using (Html.BeginForm())
{
var counter = 0;
foreach (var customer in this.Model)
{
<input type="text" name="customers[@counter].Id" value="@customer.Id"/>
<input type="text" name="customers[@counter].CompanyName" value="@customer.CompanyName"/>
counter++;
}
<input type="submit" />
}

这将是 Controller 的相关部分:
public ActionResult Test()
{
return View(Service.GetCustomers());
}

[HttpPost]
public ActionResult Test(Customer[] customers )
{
return View(customers);
}

关于asp.net-mvc-3 - .NET MVC - 一次提交多个相同类型的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110614/

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