Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何使一个视图的内容与';它的布局中指定了什么?_Vb.net_Asp.net Mvc 3_Razor - Fatal编程技术网

Vb.net 如何使一个视图的内容与';它的布局中指定了什么?

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() @&

假设我有许多视图,每个视图都显示非常相似的内容。每个视图使用与_ViewStart中定义的相同的_布局

我的_布局可能如下所示:

<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”,否则在每个视图中都会看到它。观点很好。虽然如果我在_布局中指定了这个部分,除非它在视图中被覆盖,否则它不会一直存在吗。是的,但这有点违背了重点。分段的思想是渲染“有条件地,然后仅当您希望查看/使用它们时才将它们添加到视图中。把它想象成方法中的一个可选参数。我已经更新了我的代码,以便更明确地了解正在发生的事情。现在它更有意义了吗?我想要它,以便该部分有一个默认值,除非另有规定。好的,我得到了它。这是有道理的