我是MVC的新手,所以我不确定这里最好的方法是什么.
我有一个包含这样的几个集合的视图模型:
public class MainViewModel{
public List<AViewModel> A { get; set; }
public List<BViewModel> B {get; set; }
...}
Run Code Online (Sandbox Code Playgroud)
我在这里使用Steve Sanderson的方法动态地将项目添加到集合中,只要子视图在主视图上可编辑,它就能正常工作.
我遇到的问题是返回一个带有编辑链接的只读列表,该列表将打开要在弹出对话框中编辑的详细信息.
由于这些项可能是新添加的,因此我无法使用ID属性从控制器返回局部视图.看起来我必须在这样的隐藏div中渲染编辑器:
<div class="AEditorRow">
@using (Html.BeginCollectionItem("A"))
{
@Html.DisplayFor(l => l.ID)
@Html.DisplayFor(l => l.Name)
@Html.DisplayFor(l => l.Code)
<a href="#" onclick="$('#detailsPopup').html($(this).parent().find('.ADetails').html() ).dialog()">edit</a> <text>|</text>
<a href="#" class="deleteRow">delete</a>
<div class="ADetails" style="display: none">
@using (Html.BeginForm("EditA", "Controller"))
{<fieldset>
<legend>Location</legend>
@Html.HiddenFor(model => model.ID)
<div class="editor-label">
@Html.LabelFor(model => model.Code)
</div>
Run Code Online (Sandbox Code Playgroud)
有谁知道更好的方法吗?
在解决了这个问题一段时间之后,我找到了一个适合我的演练.
http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3
我认为这是为MVC3完成动态添加的嵌套集合对象最适用的技术.我发现的大多数其他建议都是针对MVC2或MVC1的,而MVC的每次迭代似乎都是稍微改变的最佳方式.
希望这适合你.
| 归档时间: |
|
| 查看次数: |
11682 次 |
| 最近记录: |