Asp.net mvc 如何使局部视图可配置?
假设我有一个名为“Container”的局部视图,其中包含两个称为“PartialA”和“PartialB”的局部视图。在“Conatiner”局部视图上,我需要某种配置能力,以便在主视图上使用“容器”局部视图时,我们可以控制内部视图的可见性,即是否应渲染PartialA和PartialB,或者只渲染其中任何一个,或者根本不渲染任何一个。基本上,我希望主视图决定应该渲染哪些内部视图 实现这一目标的最佳方式是什么Asp.net mvc 如何使局部视图可配置?,asp.net-mvc,partial-views,renderpartial,asp.net-mvc-partialview,Asp.net Mvc,Partial Views,Renderpartial,Asp.net Mvc Partialview,假设我有一个名为“Container”的局部视图,其中包含两个称为“PartialA”和“PartialB”的局部视图。在“Conatiner”局部视图上,我需要某种配置能力,以便在主视图上使用“容器”局部视图时,我们可以控制内部视图的可见性,即是否应渲染PartialA和PartialB,或者只渲染其中任何一个,或者根本不渲染任何一个。基本上,我希望主视图决定应该渲染哪些内部视图 实现这一目标的最佳方式是什么 创建要传递到包含1个标志(或添加到现有标志)的容器的视图模型: 在调用主视图的控制
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);
}
}
使用视图数据或向视图传递指定可见性的模型。同意视图模型(反映在下面的响应中),不同意视图数据。尽管它可以工作,但它就像在面向对象应用程序中声明全局变量一样。的确很糟糕的设计,但当然,全局变量和视图数据都可以工作。
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);
}
}