使用@foreach在一个视图上呈现多个(PartialView)表单

时间:2014-11-18 14:59:03

标签: asp.net-mvc razor mvvm asp.net-mvc-5

假设我有五种不同的独特形式(即Form1,Form2等),以及名为 ManyForms 的视图。五种形式中的每一种都有自己的PartialView(称为 _Form1 _Form2 等)

我希望能够在 ManyForms 上呈现这些PartialViews,我知道我可以使用@Html.RenderPartial来执行此操作。

但是,我希望能够在 ManyForms 视图中动态呈现多个表单(例如,三个 _Form3 s,两个 _Form4 s,一个 _Form5 )。

我的案例是否保证使用@foreach?如果是这样,我将如何使用@foreach来完成此任务,以及ViewModel应该是什么(粗略地说) - 假设我可能会遇到一些非常恼人的字典错误?

1 个答案:

答案 0 :(得分:0)

我最终使用看起来像这样的ViewModel来完成这项工作:

public class MainViewModel
{
    public List<Form1> Form1{ get; set; }
    public List<Form2> Form2 { get; set; }
    public List<Form3> Form3{ get; set; }
    // etc.

    public MainViewModel() {

        Form1 = new List<Form1>();
        Form2 = new List<Form2>();
        Form3 = new List<Form3>();
        // etc.
}

ManyForms 视图中:

@model Forms.Models.ViewModels.MainViewModel

<div class="container-fluid">
    <div id="MainFormAccordion">

        @foreach (var x in Model.Form1.ToList())
        {
            Html.RenderPartial("_Form1", x);
        }

        @foreach (var x in Model.Form2.ToList())
        {
            Html.RenderPartial("_Form2", x);
        }

// etc. 

_Form PartialViews均用作模型MainViewModel.FormX。我不知道我是否遵循这里的良好做法,但我想这就是人们如何使用@foreach