0

我正在尝试通过一个模型呈现两个表。我正在使用我的帮助程序 dll 来创建表。问题是,我不知道如何在第一次调用页面时只渲染部分视图数据。这是一些代码:

控制器:(创建两个表和视图数据,返回视图,带有模型视图数据)

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

部分视图(已编辑):

@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 中显示的数据显示在一个模型中,两个表将相互跟随,而 renderpartial 显示一个,然后是按钮,然后是第二个。如何使用该模型以便我只能处理一张表?

我希望我的问题是可以理解的,解释起来似乎很复杂;)

提前致谢

丹尼尔

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 是您的视图的主要数据字典,它实际上包含您传递的模型。

编辑: 这应该工作,这是你必须做的。您的局部视图必须接受表类型(我们将其命名为 TableModel)作为它们自己的模型类型,而不是 VD_Planung_Prognosen。

  • 在您的部分中,更改@model namespace.Models.VD_Planung_Prognosen@model namespace.Models.TableModel

  • 在您的局部视图中,“模型”一词将指局部模型,而不是主视图的模型。所以你的观点应该是这样的:

    @model 命名空间.Models.TableModel

    @使用 HelperLib_Html.Tabelle.v1_02;

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

  • 最后在您的主视图中,将您的渲染部分更改为

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

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