我有一组名为Accounts的实体。单个用户将拥有多个帐户,并可以为每个帐户设置百分比。
用户界面将列出所有帐户,每个帐户的可编辑字段为百分比属性。这将由文本框表示。
用户进行任何调整后,会将表格发回处理。
我在其他一些项目中使用过MVC并且我理解模型绑定,但我不知道如何处理模型的 集合 。
我不是在寻找代码,也不是某人为我写出完整的答案(尽管老实说,我不会抱怨......)。我正在寻找指导方向。
提前致谢。
答案 0 :(得分:1)
两件事:
1)您需要在总体页面视图模型中使用Account / List of Account或List / Collection of AccountViewModel
所以,你会有
public class MyPageViewModel
{
public Collection<Account> AccountList;
//AccountViewModel is what I'd use but for simplicity
//Other properties for view model
}
您现在拥有一个包含帐户列表的视图模型。
2)
在您看来,您有两种选择。
a)只需创建一个for循环来为每个帐户吐出你想要的HTML(不是特别漂亮)
b)创建一个编辑器模板,这样您就不必做任何特别的事情了 您的页面将具有此功能。
@Html.EditorFor(model => model.AccountList)
以下是编辑器模板的设置方法。
这是我正在进行的一个项目。这里的内容应该是您在视图文件夹下添加一个“EditorTemplates”文件夹,该文件夹与您正在处理的内容相匹配。按照惯例,当您使用EditorFor时,MVC将在此文件夹中查找模板。现在,您只需在强类型模板中插入所需的任何HTML(这将采用Account或AccountViewModel对象),您就完成了。您的视图中不需要for循环就可以为每个帐户分配HTML。
真的,那就是那个时候。您的帖子操作会将绑定模型绑定到MyPageViewModel类型,该类型将包含您想要的更新数据
希望能让你指出正确的方向。
答案 1 :(得分:1)
以下是如何解决您的任务的示例
首先让我们定义一个模型:
public class Account
{
public int Id { get; set; }
public string Number { get; set; }
public decimal Percentage { get; set; }
}
public class UserEditModel
{
public ICollection<Account> Accounts { get; set; }
}
UserEditModel是一个视图模型。它包含声明为帐户集合的属性帐户。
我将在视图中描述一个表格以显示帐户并编辑其百分比:
<form action="Url.Action("Save")" method="POST">
<table>
<thead>
<tr>
<td>Number</td>
<td>Percentage</td>
</tr>
</thead>
<tbody>
@for (var i = 0; i < Model.Accounts.Count(); i ++)
{
<tr>
<td>
@Html.HiddenFor(m => m.Accounts[i].Id)
@Html.HiddenFor(m => m.Accounts[i].Number)
@Model.Accounts[i].Number
</td>
<td>
@Html.TextBoxFor(m => m.Accounts[i].Id)
</td>
</tr>
}
</tbody>
</table>
</form>
在视图模型的Accounts属性中提交表单后,我们将按用户百分比值更改。