假设我有一个名为'Container'的局部视图,其中包含两个名为'PartialA'和'PartialB'的部分视图。在'Conatiner'局部视图中,我想要某种配置能力,这样当我们在主视图上使用'容器'局部视图时,我们可以控制内部视图的可见性,即是否应该渲染PartialA和PartialB,或者只是渲染他们中的任何一个或根本没有。基本上我希望主视图决定应该呈现哪些内部视图。
实现这一目标的最佳方法是什么?
答案 0 :(得分:3)
创建一个视图模型,您将传递给包含1个标志的Container(或添加到现有标志):
public bool PartialAVisible;
public bool PartialBVisible;
设置可见性标志,因为您希望可见性位于Controller中,该控制器将调用主视图或在主视图内并将其传递给Container
在Container中执行以下逻辑
if (PartialAVisible)
@Html.Partial("PartialA", model)
if (PartialBVisible)
@Html.Partial("PartialB", model)
希望这有帮助
答案 1 :(得分:0)
您可以从System.Web.Mvc.ViewPage继承,如果您需要在整个应用程序中使用此规则,请在那里添加规则。
public class ViewPageBase : System.Web.Mvc.ViewPage
{
public bool PartialAVisable
{
get
{
//Determin if visable
}
}
public bool PartialBVisable
{
get
{
//Determin if visable
}
}
protected override void Render(HtmlTextWriter writer)
{
if (PartialAVisable)
{
//Apend partail A
}
if (PartialBVisable)
{
//Apend partail B
}
base.Render(writer);
}
}