1

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

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

4

2 回答 2

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

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

  3. 在 Container 中执行以下逻辑

    if (PartialAVisible)
       @Html.Partial("PartialA", model)
    if (PartialBVisible)
       @Html.Partial("PartialB", model)
    

希望这可以帮助

于 2012-09-17T22:01:00.020 回答
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);
    }
}
于 2012-09-17T22:48:39.030 回答