繁体   English   中英

ASP.NET MVC LIST和Create在同一视图中

[英]ASP.NET MVC LIST and Create in same view

好的我有一个View强制类型作为MyObject的集合

@model IEnumerable<ViewModels.MyObject>

我遍历集合以创建对象列表。

在同一页面上,我需要创建表单来添加新的MyObject。

有没有办法沿着lambda表达式使用Html帮助器来创建从我的模型强类型的元素?

或者最好将此页面的Form部分加载为另一个部分视图,类型为MyObject(不是集合)?

您可以使用两个视图模型创建视图模型作为属性:

class ListCreateViewModel {
    ListViewModel ListViewModel { get; set; }
    CreateViewModel CreateViewModel { get; set; }
}

然后你可以使用

Html.RenderPartial("Create", Model.CreateViewModel);

您的部分将CreateViewModel作为模型。

您还可以制作完全独立的视图和模型并调用:

Html.RenderAction("Create", "Controller");

RenderAction表现为新请求,视图在不同的上下文中呈现。

我遍历集合以创建对象列表。

你为什么要循环? 在一个视图中循环是丑陋的。 您可以使用编辑器模板:

@model IEnumerable<ViewModels.MyObject>
@using (Html.BeginForm())
{
    @Html.EditorForModel()
    <input type="submit" value="Go!" />
}

在相应的编辑器模板中,将为模型集合的每个项目调用( ~/Views/Shared/EditorTemplates/MyObject.cshtml ):

@model ViewModels.MyObject
<div>
    @Html.LabelFor(x => x.Prop1)
    @Html.TextBoxFor(x => x.Prop1)
    @Html.ValidationMessageFor(x => x.Prop1)
</div>
<div>
    @Html.LabelFor(x => x.Prop2)
    @Html.TextBoxFor(x => x.Prop2)
    @Html.ValidationMessageFor(x => x.Prop2)
</div>
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM