假设我有一个名为“Container”的局部视图,其中包含两个名为“PartialA”和“PartialB”的局部视图。在“Conatiner”局部视图上,我想要某种配置能力,这样当我们在主视图上使用“Container”局部视图时,我们可以控制内部视图的可见性,即是否应该渲染 PartialA 和 PartialB 还是只渲染其中任何一个或根本没有。基本上我希望主视图来决定应该呈现哪些内部视图。
实现这一目标的最佳方法是什么?
假设我有一个名为“Container”的局部视图,其中包含两个名为“PartialA”和“PartialB”的局部视图。在“Conatiner”局部视图上,我想要某种配置能力,这样当我们在主视图上使用“Container”局部视图时,我们可以控制内部视图的可见性,即是否应该渲染 PartialA 和 PartialB 还是只渲染其中任何一个或根本没有。基本上我希望主视图来决定应该呈现哪些内部视图。
实现这一目标的最佳方法是什么?
创建一个您将传递给 Container 的视图模型,其中将包含 1 个标志(或添加到现有标志):
public bool PartialAVisible;
public bool PartialBVisible;
设置可见性标志,因为您希望可见性在将调用您的主视图或在主视图内的控制器中,并将其传递给容器
在 Container 中执行以下逻辑
if (PartialAVisible)
@Html.Partial("PartialA", model)
if (PartialBVisible)
@Html.Partial("PartialB", model)
希望这可以帮助
如果您在整个应用程序中需要它,您可以从 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);
}
}