Asp.net mvc 如何使局部视图可配置?

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个标志(或添加到现有标志)的容器的视图模型: 在调用主视图的控制

假设我有一个名为“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);
        }
    }