0

1 つのモデルで 2 つのテーブルをレンダリングしようとしています。ヘルパー dll を使用してテーブルを作成しています。問題は、ページの最初の呼び出しでビューデータの一部のみをレンダリングする方法がわからないことです。ここにいくつかのコードがあります:

コントローラー: (2 つのテーブルとビューデータを作成し、ビューを返し、モデルのビューデータを使用)

public class Controller1 : Controller {      
//some code
public ActionResult Steuertabellen()
    {
    table = table_fill();
    table= Tabelle.tabelleGenerieren(
    table,
    new Dictionary<string, SortierRichtung>(),
    new List<string>(),
    new List<string>()               
    );


    table2 = table_fill();
    table2 = Tabelle.tabelleGenerieren(
    table2,
    new Dictionary<string, SortierRichtung>(),
    new List<string>()               
    );


    VD_Planung_Prognosen viewdata = new VD_Planung_Prognosen();
    viewdata.table= table;
    viewdata.table2= table2;

    return view(viewdata);
}

意見:

@model namespace.Models.VD_Planung_Prognosen
@using namespace.Models;

<div class="tabelle_partialview" id="tabelle_partialview_@(tabellen2ID)">@{Html.RenderPartial("PV_table2", Model);}</div>
<div id="optionen_tabelle">
    <div id="optionen_rechts">
        <button class="btn_speichern btn_speichern_@(tabellenID)" id="btn_speichern">Speichern</button>
        <button class="btn_abbrechen btn_abbrechen_@(tabellenID)" id="btn_abbrechen_@(tabellenID)">Abbrechen</button>
    </div>
</div>
<div class="tabelle_partialview" id="tabelle_partialview_@(tabellenID)">@{Html.RenderPartial("PV_table", Model);}

PartialViews (編集済み):

@model namespace.Models.VD_Planung_Prognosen
@using HelperLib_Html.Tabelle.v1_02;

@{
@Html.createTabelle(Model.tabel1)
}
//<some style>

編集 モデルを追加しました(おそらく以前にそれを行うべきでした)

モデル:

public class VD_Planung_Prognosen
  {
    public Matrix matrix  { get; set; }
    public Tabelle table1{ get; set; }
    public Tabelle table2{ get; set; }
    public List<stored_procedure1> years{ get; set;     }
    public List<stored_procedure2> groups{ get; set; }
    public List<stored_procedure3> cost{ get; set; }
    public List<stored_procedure4> costs2{ get; set; }
    public List<stored_procedure5> data{ get; set; }
    public int year{ get; set; }
    public string grp{ get; set; }
    public bool pflegeSteuertabellen { get; set; }
}

上記の actionlink に示されているデータは 1 つのモデルで示されているため、2 つのテーブルが相互に続き、renderpartial では 1 つが表示され、次にボタンが表示され、次に 2 つ目が表示されるため、これは機能しません。1 つのテーブルのみに対応できるようにモデルを使用するにはどうすればよいですか?

私の質問が理解できることを願っています。説明するのはかなり複雑です;)

前もって感謝します

ダニエル

Edit1: もちろん、PV もコントローラーで作成されます。ActionLink ビューと非常によく似ています。

4

1 に答える 1

1

あなたの問題が何であるかを理解することはできませんが、RenderPartial 呼び出しをに変更しようとしましたか?

@{Html.RenderPartial("PV_table2", Model.table2);}

@{Html.RenderPartial("PV_table", Model.table);}

部分ビューをレンダリングするときは、部分ビューの上部で指定された独自のモデル タイプのインスタンスをビューに提供します。

@model SomeNamespace.SomeModelType

ここに示すビューでは、変数 Model はコントローラー変数「viewdata」を参照しますが、パーシャルはメンバー viewdata.table および viewdata.table2 と同じ型を持つ変数を想定する必要があります。

補足: モデルに「viewdata」という名前を付けない場合があります。ViewData はビューのメイン データ ディクショナリであり、実際に渡すモデルが含まれているため、少し混乱します。

編集: これはうまくいくはずです。これがあなたがしなければならないことです。部分ビューは、VD_Planung_Prognosen ではなく、独自のモデル タイプとしてテーブル タイプ (TableModel と名付けましょう) を受け入れる必要があります。

  • パーシャルで、に変更@model namespace.Models.VD_Planung_Prognosenします@model namespace.Models.TableModel

  • パーシャルでは、「モデル」という言葉は、メイン ビューのモデルではなく、パーシャルのモデルを指します。したがって、ビューは次のようになります。

    @model 名前空間.Models.TableModel

    @using HelperLib_Html.Tabelle.v1_02;

    @{ @Html.createTabelle(Model) } //

  • 最後にメイン ビューで、renderpartials を次のように変更します。

    @{Html.RenderPartial("PV_table", Model.table);}

@{Html.RenderPartial("PV_table2", Model.table2);}
于 2013-06-11T08:35:40.987 に答える