我有一个List
使用单独模型的集合 (a) 创建的视图模型。在我们的数据库中,我们有两个表:BankListMaster
和BankListAgentId
。“主”表的主键用作代理 ID 表的外键。
由于 Master/Agent ID 表具有一对多的关系,因此我创建的视图模型包含一个List
对象BankListAgentId
。在我们的编辑页面上,我希望能够显示与特定银行关联的任何和所有代理 ID,并让用户能够添加或删除它们。
我目前正在阅读Steve Sanderson关于编辑可变长度列表的博客文章。但是,从数据库中提取现有项目时,它似乎并未涵盖此特定场景。
我的问题是您能否将特定的集合项传递给局部视图,如果可以,您将如何正确地将其编码到局部视图中?下面的代码表明
The name 'item' does not exist in the current context
但是,我也尝试for
在局部视图中使用带有索引的常规循环和这种语法:
model => model.Fixed[i].AgentId
但这只是告诉我该名称i
在当前上下文中不存在。视图不会使用任何一种方法呈现。
下面是视图中的代码
@model Monet.ViewModel.BankListViewModel
@using (Html.BeginForm())
{
<fieldset>
<legend>Stat(s) Fixed</legend>
<table>
<th>State Code</th>
<th>Agent ID</th>
<th></th>
@foreach(var item in Model.Fixed)
{
@Html.Partial("FixedPartialView", item)
}
</table>
</fieldset>
}
这是部分视图
@model Monet.ViewModel.BankListViewModel
<td>
@Html.DropDownListFor(item.StateCode,
(SelectList)ViewBag.StateCodeList, item.StateCode)
</td>
<td>
@Html.EditorFor(item.AgentId)
@Html.ValidationMessageFor(model => model.Fixed[i].AgentId)
<br />
<a href="#" onclick="$(this).parent().remove();" style="float:right;">Delete</a>
</td>
这是视图模型。它当前将固定/可变代理 Id 列表初始化为 10,但这只是启动和运行此页面的一种解决方法。最后,希望是允许列表根据需要变大或变小。
public class BankListViewModel
{
public int ID { get; set; }
public string BankName { get; set; }
public string LastChangeOperator { get; set; }
public Nullable<System.DateTime> LastChangeDate { get; set; }
public List<BankListAgentId> Fixed { get; set; }
public List<BankListAgentId> Variable { get; set; }
public List<BankListAttachments> Attachments { get; set; }
public BankListViewModel()
{
//Initialize Fixed and Variable stat Lists
Fixed = new List<BankListAgentId>();
Variable = new List<BankListAgentId>();
Models.BankListAgentId agentId = new BankListAgentId();
for (int i = 0; i < 5; i++)
{
Fixed.Add(agentId);
Variable.Add(agentId);
}
//Initialize attachment Lists
Attachments = new List<BankListAttachments>();
Attachments.Add(new BankListAttachments());
}
}