如何使局部视图可配置?

时间:2012-09-17 21:47:15

标签: asp.net-mvc partial-views renderpartial asp.net-mvc-partialview

假设我有一个名为'Container'的局部视图,其中包含两个名为'PartialA'和'PartialB'的部分视图。在'Conatiner'局部视图中,我想要某种配置能力,这样当我们在主视图上使用'容器'局部视图时,我们可以控制内部视图的可见性,即是否应该渲染PartialA和PartialB,或者只是渲染他们中的任何一个或根本没有。基本上我希望主视图决定应该呈现哪些内部视图。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

  1. 创建一个视图模型,您将传递给包含1个标志的Container(或添加到现有标志):

    public bool PartialAVisible;
    public bool PartialBVisible;
    
  2. 设置可见性标志,因为您希望可见性位于Controller中,该控制器将调用主视图或在主视图内并将其传递给Container

  3. 在Container中执行以下逻辑

    if (PartialAVisible)
       @Html.Partial("PartialA", model)
    if (PartialBVisible)
       @Html.Partial("PartialB", model)
    
  4. 希望这有帮助

答案 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);
    }
}