Vb.net 如何使一个视图的内容与';它的布局中指定了什么?
假设我有许多视图,每个视图都显示非常相似的内容。每个视图使用与_ViewStart中定义的相同的_布局 我的_布局可能如下所示:Vb.net 如何使一个视图的内容与';它的布局中指定了什么?,vb.net,asp.net-mvc-3,razor,Vb.net,Asp.net Mvc 3,Razor,假设我有许多视图,每个视图都显示非常相似的内容。每个视图使用与_ViewStart中定义的相同的_布局 我的_布局可能如下所示: <html> <!-- some html --> @ViewBag.SomeViewBagFun <!-- more html --> @RenderBody <!-- more html --> @SpecialFunction() </html> Helper SpecialFunction() @&
<html>
<!-- some html -->
@ViewBag.SomeViewBagFun
<!-- more html -->
@RenderBody
<!-- more html -->
@SpecialFunction()
</html>
Helper SpecialFunction()
@<a href="/">Linky</a>
@<!-- complex HTML -->
End Helper
@取景袋。一些取景袋
@渲染器
@特殊函数()
助手特殊函数()
@
@
末端助手
假设90%的我的页面使用布局中定义的默认SpecialFunction()
,但有时一些视图需要不同的SpecialFunction()
解决这个问题的一种方法是使用ViewBag
并以这种方式发送每个视图内容,但是SpecialFunction()
包含复杂的HTML,我想使用razor视图
如何实现这一点?您可以在实际的
视图中指定布局
@{
Layout = "/address/to/your/different/layout.cshtml"
}
查看此页以了解更多信息。您可以在实际的视图中指定布局
@{
Layout = "/address/to/your/different/layout.cshtml"
}
查看此部分了解更多信息。执行此操作的最佳方法是使用节,并在渲染时使其成为非必需的
有关详细信息,请参阅ScottGu的博客:执行此操作的最佳方法是使用一个部分,并在渲染时使其成为非必需部分
有关详细信息,请参见ScottGu的博客:OP here
我已经有一段时间没有使用ASP.NETMVC和Razor了。我忘记了部分。我觉得很傻^^
解决方案:
\u布局
@取景袋。一些取景袋
@渲染器
@如果定义了ISSection(“SpecialFunction”),则
@渲染部分(“SpecialFunction”,False)
其他的
@特殊函数()
如果结束
助手特殊函数()
@
@
末端助手
另一个视图
节特殊功能
非常不同的HTML
端部
点击这里
我已经有一段时间没有使用ASP.NETMVC和Razor了。我忘记了部分。我觉得很傻^^
解决方案:
\u布局
@取景袋。一些取景袋
@渲染器
@如果定义了ISSection(“SpecialFunction”),则
@渲染部分(“SpecialFunction”,False)
其他的
@特殊函数()
如果结束
助手特殊函数()
@
@
末端助手
另一个视图
节特殊功能
非常不同的HTML
端部
您可以向viewbag添加条件,并基于布局将执行SpecialFunction或其他函数的值您可以向viewbag添加条件,并基于布局将执行SpecialFunction或其他函数的值我相信这个问题更适合StackOverflow。应该迁移,该死。我把它放在这里是想它更多的是一个概念问题,而不是一些过于具体的问题。谢谢,我已经为迁移报告了这个问题。我相信这个问题更适合StackOverflow。应该迁移,该死。我把它放在这里是想它更多的是一个概念问题,而不是一些过于具体的问题。谢谢,我已经为迁移报告了它。但是在我的示例中,视图仍然希望使用_布局(与所有其他视图一样),只需更改布局的特定部分。这可能吗?但在我的示例中,视图仍然希望使用_布局(与所有其他视图一样),只需更改布局的特定部分。这可能吗?我相信,由于您在示例中对其进行了编码,因此该部分是必需的。除非你的部分被标记为“required:false”,否则在每个视图中都会看到它。观点很好。虽然如果我在_布局中指定了这个部分,除非它在视图中被覆盖,否则它不会一直存在吗。是的,但这有点违背了重点。分段的思想是渲染“有条件地,然后仅当您希望查看/使用它们时才将它们添加到视图中。把它想象成方法中的一个可选参数。我已经更新了我的代码,以便更明确地了解正在发生的事情。现在它更有意义了吗?我想要它,以便该部分有一个默认值,除非另有规定。好的,我得到了它。这使唤醒相信,因为你已经在你的样本编码,该部分是必需的。除非你的部分被标记为“required:false”,否则在每个视图中都会看到它。观点很好。虽然如果我在_布局中指定了这个部分,除非它在视图中被覆盖,否则它不会一直存在吗。是的,但这有点违背了重点。分段的思想是渲染“有条件地,然后仅当您希望查看/使用它们时才将它们添加到视图中。把它想象成方法中的一个可选参数。我已经更新了我的代码,以便更明确地了解正在发生的事情。现在它更有意义了吗?我想要它,以便该部分有一个默认值,除非另有规定。好的,我得到了它。这是有道理的