我试图通过一个模型渲染两个表。我正在使用我的助手dll来创建表格。 问题是,在第一次调用页面时,我不知道如何只渲染部分viewdata。 这是一些代码:
控制器:(创建两个表和视图数据,返回视图,使用模型viewdata)
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>
修改 我添加了模型(sry我应该在之前做过)
型号:
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视图
答案 0 :(得分:1)
我不确定您的问题是什么,但是您是否尝试将RenderPartial调用更改为
@{Html.RenderPartial("PV_table2", Model.table2);}
和
@{Html.RenderPartial("PV_table", Model.table);}
渲染部分视图时,为视图提供在其顶部的局部视图中指定的自己的模型类型的实例:
@model SomeNamespace.SomeModelType
在此处显示的视图中,变量Model引用您的控制器变量“viewdata”,而您的partials应该期望与您的成员viewdata.table和viewdata.table2具有相同类型的变量。
附注:您可能没有将模型命名为“viewdata”,因为ViewData是视图的主要数据字典,它实际上包含您传递的模型,因此有点令人困惑。
修改: 这应该工作,这是你必须做的。您的部分视图必须接受表类型(我们将其命名为TableModel)作为它们自己的模型类型,而不是VD_Planung_Prognosen。
在您的部分内容中,将@model namespace.Models.VD_Planung_Prognosen
更改为@model namespace.Models.TableModel
在您的部分中,“模型”一词将指代部分的模型,而不是主视图的模型。所以你的观点应该是这样的:
@model namespace.Models.TableModel
@using HelperLib_Html.Tabelle.v1_02;
@ { @ Html.createTabelle(型号) } //
最后在主视图中,将您的renderpartials更改为
@ {Html.RenderPartial(“PV_table”,Model.table);}
和
@{Html.RenderPartial("PV_table2", Model.table2);}