我有一个实体集合,称为帐户。单个用户将拥有多个帐户,并且可以为每个帐户设置百分比。
UI 将列出所有帐户,每个帐户的可编辑字段是百分比属性。这将由一个文本框表示。
用户进行任何调整后,他们会将表单发回以进行处理。
我在其他几个项目中使用过 MVC,并且我了解模型绑定,但我不确定在处理模型集合时如何进行。
我不是在寻找代码或让某人为我写出完整的答案(尽管老实说我不会抱怨......)。我正在寻找方向的指导。
提前致谢。
我有一个实体集合,称为帐户。单个用户将拥有多个帐户,并且可以为每个帐户设置百分比。
UI 将列出所有帐户,每个帐户的可编辑字段是百分比属性。这将由一个文本框表示。
用户进行任何调整后,他们会将表单发回以进行处理。
我在其他几个项目中使用过 MVC,并且我了解模型绑定,但我不确定在处理模型集合时如何进行。
我不是在寻找代码或让某人为我写出完整的答案(尽管老实说我不会抱怨......)。我正在寻找方向的指导。
提前致谢。
两件事情:
1)您需要在总体页面视图模型中使用帐户列表/集合或 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。
真的,到时候就是这样。您的 post 操作将模型绑定到 MyPageViewModel 类型,该类型将具有您想要的更新数据
希望这能让你指出正确的方向。
这是如何解决您的任务的示例
首先让我们定义一个模型:
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 是一个视图模型。它包含声明为 Account 集合的属性 Accounts。
我将在视图中描述一个表格以显示帐户并编辑它们的百分比:
<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 属性中提交表单后,我们将根据用户的百分比值进行更改。