Jas*_*Cav 10 .net viewdata asp.net-mvc-2
我一直在阅读Scott Guthrie关于将ViewData从控制器传递到视图的帖子,但我不认为该课程是针对我的具体情况点击的.
(注意:由于客户端的专有限制,我不能说贴实际代码,所以如果我的编写案例有点愚蠢/混乱,我道歉.)
我有一个名为ScenarioController的Controller,它处理围绕创建Scenario模型的各种操作.用户将完成的各种操作是方案的一般CRUD.我可以创建一个为Scenario模型执行此操作的网站.但是,我最近更新了Scenario模型,现在它由各种子组件(其他对象列表)组成.相应的视图使用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>
Run Code Online (Sandbox Code Playgroud)
并且部分页面强烈地键入它们所代表的任何内容(主要是List<SomeObject>).
如何在Scenario模型中存储数据?我正在使用SQL数据库并与Entity Framework连接.我是否仍然需要表示各种项目列表的属性(因此我可以使用强类型类传递ViewData),或者这是我可以直接从实体调用传入ViewData(并根据需要进行转换)?
您可以在视图中传递任意数量的模型。您只需制作一个封装模型,其中可以包含所有“要发送”的模型。
您也可以使用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>
Run Code Online (Sandbox Code Playgroud)
你的封装模型可能看起来像
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助