【问题标题】:Controling Partial view from controller based on condition in Razor MVC4根据 Razor MVC 4 中的条件从控制器控制部分视图
【发布时间】:2013-02-26 11:43:39
【问题描述】:

在我的主页视图中,我在 HTMl 下面有 3 个部分视图。在那个 First Partial 视图中将始终呈现。第二和第三将由家庭控制器根据标志 0 或 1 决定。 如何处理这种情况。请给我建议。

<div>             
    <div>
        -- some HTML
    </div>   
    @{ Html.RenderAction("First", "First");}
    @{ Html.RenderAction("Second", "Second");}
    @{ Html.RenderAction("Third", "Third");}

</div>

【问题讨论】:

    标签: c# asp.net-mvc razor asp.net-mvc-4 asp.net-mvc-partialview


    【解决方案1】:

    如果您决定按照您所说的那样在控制器中标记然后将其发送到视图,然后简单地在视图中使用此标记来决定是否渲染第二个和第三个,会有什么问题?

    在控制器中

    ViewBag.Flag = bool // 0 or 1 as per your logic
    

    在视图中

    if(ViewBag.Flag){
        @{ Html.RenderAction("Second", "Second");}
        @{ Html.RenderAction("Third", "Third");}
    }
    

    【讨论】:

    • 你是怎么得出这个结论的?如果标志为 0,它不会呈现以及当它不执行 if 语句中的语句时它会如何呈现?
    • 不,你对工作流程的理解是完全错误的。在将输出发送到客户端之前执行部分操作。在编译 Razor 视图时,如果 Razor 引擎遇到 RenderActoin 语句(当 Flag 为 0 时不会出现这种情况),则会启动一个完全不同的 MVC 请求生命周期。然后这个新的 MVC 请求的输出被放置在部分请求开始的地方。
    • 我不是一个好老师。可能是其他人可以在这里帮助你。但是您可以通过在部分操作中添加某种日志记录功能来验证这一点,然后检查它们是否被执行:)
    • 感谢您的意见先生干杯
    • 那么结论是什么,你得到了你想要的东西吗?
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多