如何在同一视图中使用许多renderActions

时间:2014-03-25 17:52:26

标签: c# .net asp.net-mvc

我有这样的模型

public class Extended_Model
    {
        public IEnumerable<Model1> Models1 { get; set; }
        public IEnumerable<Model2> Models2{ get; set; }
        public IEnumerable<Model3> Models3 { get; set; }
        public IEnumerable<Model1_Model2> Rel_Model1_Model2 { get; set; }
        public IEnumerable<Model1_Model3> Rel_Model1_Model2 { get; set; }
    }

我想问你Html.RenderAction是如何工作的。我有一个带有3个RenderActions的Extended_Model的Create视图:

@Html.RenderAction("Create", "Model1");

@Html.RenderAction("Create", "Model2");

@Html.RenderAction("Create", "Model3");

因此,他们向我展示了每个模型的创建视图。

我想要的是填写模型的信息(隐藏他们的提交按钮),创建它们并创建关系。

我该怎么办? RenderAction是我需要的还是其他什么?

感谢!!!

1 个答案:

答案 0 :(得分:0)

我会使用EditorTemplates。这实际上是使用它们的完美场景。

基本上,你可以这样设置它们:

\视图\共享\ EditorTemplates \ Model1.cshtml

@model Model1
<!--Whatever HTML code you want to edit/create your Model1-->

并重复其他型号。然后在父视图中,您可以轻松地将它们渲染出来:

@model Extended_Model
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.EditorFor(m => m.Models1)
    @Html.EditorFor(m => m.Models2)
    @Html.EditorFor(m => m.Models3)
    @Html.EditorFor(m => m.Rel_Model1_Model2)
    @Html.EditorFor(m => m.Rel_Model1_Model2)
    <input type="submit" value="Save" />
}

您甚至不需要实现循环逻辑,因为按惯例,MVC将为您loop over your IEnumerables