代码之家  ›  专栏  ›  技术社区  ›  JasCav

如何将多个模型传递给中的局部视图ASP.NETMVC公司

  •  10
  • JasCav  · 技术社区  · 16 年前

    我一直在看斯科特·古思里的帖子 Passing ViewData from Controllers to Views ,但我不认为这一课适合我的具体情况。

    (注意:由于客户专有的限制,我不能粘贴实际的代码,所以如果我编造的案例有点愚蠢/混乱,我深表歉意。)

    我有一个名为ScenarioController的控制器,它处理围绕场景模型创建的各种操作。用户将要完成的各种操作是场景的基本组成部分。我可以为场景模型创建一个这样做的网站。但是,我最近更新了场景模型,使它现在由各种子组件(其他对象的列表)组成。相应的视图利用jQuery选项卡加载部分视图,最终将表单加载到各个子组件数据。不幸的是,这是我遇到麻烦的地方。

    我的索引页当前看起来如下所示:

    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    
    <% using (Html.BeginForm()) {%>
        <div id="scenario">
            <div id="tabs">
                <ul>
                    <li><a href="#tab1">Tab 1</a></li>
                    <li><a href="#tab2">Tab 2</a></li>
                    <li><a href="#tab3">Tab 3</a></li>
                </ul>
    
                <div id="tab1"><% Html.RenderPartial("Tab1"); %></div>
                <div id="tab2"><% Html.RenderPartial("Tab2"); %></div>
                <div id="tab3"><% Html.RenderPartial("Tab3"); %></div>
            </div>
    
            <div class="submitButtons">
                <input type="button" value="Save Scenario" id="SaveScenario" />
                <input type="button" value="Submit Scenario" id="SubmitScenario" />
            </div>
        </div>
    <% } %>
    </asp:Content>
    

    部分页面被强类型化为它们所表示的任何内容(主要是 List<SomeObject>

    1 回复  |  直到 16 年前
        1
  •  4
  •   Stefanvds    16 年前

    您可以在视图中传递任意多个模型。你只需要做一个封装模型,它可以包含你所有的“发送”模型。

    ViewData 但建议使用模型。

    你的3个标签是需要整个模型还是只是其中的一部分?

    假设在封装模型中有3个模型。命名为tab1 tab2 tab3。

    Renderpartial 这是一个合适的模型:

            <div id="tab1"><% Html.RenderPartial("Tab1", Model.tab1); %></div>
            <div id="tab2"><% Html.RenderPartial("Tab2", Model.tab2); %></div>
            <div id="tab3"><% Html.RenderPartial("Tab3", Model.tab3); %></div>
    

    你的封装模型看起来像

    namespace MVCNAMESPACE.Models {
        public partial class EnCapModel {
            public List<SomeObject> tab1 { get; set; }
            public List<SomeObject> tab2 { get; set; }
            public List<SomeObject> tab3 { get; set; }
        }
    }
    

    推荐文章