簡體   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