10

コントローラーからビューへのViewDataの受け渡しに関するScottGuthrieの投稿を読んでいますが、私の特定の状況に合わせてレッスンがクリックされているとは思いません。

(注:クライアント独自の制限により、実際のコードを貼り付けることはできません。そのため、作成したケースが少しばかげている/混乱している場合はお詫び申し上げます。)

シナリオモデルの作成を中心に展開するさまざまなアクションを処理するScenarioControllerというコントローラーがあります。ユーザーが実行するさまざまなアクションは、シナリオの一般的なCRUDです。シナリオモデルに対してこれを行うWebサイトを作成できます。ただし、最近、シナリオモデルを更新して、さまざまなサブコンポーネント(他のオブジェクトのリスト)で構成されるようにしました。対応するビューは、部分的なビューをロードする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>)。

シナリオモデル内でデータをどのように保存する必要がありますか?SQLデータベースを使用していて、EntityFrameworkとインターフェイスしています。アイテムのさまざまなリストを表すプロパティがまだ必要ですか(厳密に型指定されたクラスを使用してViewDataを渡すことができます)、またはこれはエンティティ呼び出しから直接ViewDataに渡すことができます(必要に応じてキャストできます)?

4

1 に答える 1

4

ビューで必要な数のモデルを渡すことができます。送信するすべてのモデルを含むことができるカプセル化モデルを作成する必要があります。

利用することもできますがViewData、モデルの使用をお勧めします。

3つのタブにモデル全体が必要ですか、それともモデルの一部だけが必要ですか?

カプセル化モデルに3つのモデルがあるとします。tab1tab2tab3という名前。

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; }
    }
}

お役に立てれば

于 2010-09-22T14:46:01.627 に答える