【问题标题】:MVC3 write to @rendersection more than onceMVC3 多次写入@rendersection
【发布时间】:2011-12-01 17:49:54
【问题描述】:

我如何写信给:

@RenderSection("Top", false)

从局部视图中不止一次?

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-partialview


    【解决方案1】:

    你不能,直接。

    您的内容页面本身可能包含@RenderSection() 调用,但我不确定您的意思。

    或者,如果您想写入不同的内容区域,您可以简单地多次调用@RenderSection(),然后按名称匹配视图中的部分。

    【讨论】:

    • 我想让我的@rendersection 在布局中并从一个在布局中多次调用的局部视图中写入它。现在我什至不能从局部视图中做一次。那为什么不能直接写呢?那么你可以用 MVC3 做什么呢?只是从普通视图中写入?
    • 您应该只使用@Html.Partial() 在您的视图中呈现局部。
    【解决方案2】:

    局部视图内部:

     @section Top{
           @: Hi from partial!  
     }
    

    在视图内部:

     @section Top{
           @RenderSection("Top", false) 
     }
    

    内部布局:

     @RenderSection("Top", false)
    

    这是您从局部视图内部访问该部分的方式。但是你不能多次调用它,并且必须多次写入它是没有意义的。

    如果你发现你的局部视图需要写在“顶部”,然后突然需要写在“底部”,你有一个糟糕的设计,你需要重新考虑你的视图/控制器

    【讨论】:

    • @River 复制并粘贴我上面的 sn-p,它应该写“hi from partial!。另外请注意,如果 html 容器标签不可见,子标签也不可见
    • 我无法从局部视图中写入它..似乎我没有从局部视图中引用布局(我从控制器返回局部视图)。你的第二点更有趣。每次在布局中调用它时,我只需要我的部分视图的再现写入页面的顶部。您可以从控制器多次写入渲染部分吗?
    • 啊,现在我明白了,你实际上有 3 个视图。更新答案
    • 我只希望我的局部视图将特定信息写入一个地方。如果您不能多次写入渲染部分,那我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多