Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Asp.net mvc 3 Razor视图引擎渲染部分_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 3 Razor视图引擎渲染部分

Asp.net mvc 3 Razor视图引擎渲染部分,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我真的在挖掘这个新的Razor视图引擎。。。对于刚从另一个网络平台来的人来说,新的MVC 3的努力开始让我感到宾至如归 我的问题是关于节,我认为可以在布局中定义节并向其中注入内容,但从我看到的所有示例来看,这似乎是从视图中完成的。对我来说,从控制器为每个部分分配内容或输出更有意义 因此,如果我有一个包含侧栏的布局,我希望将小部件加载到我的视图文件中,那么我不应该负责将内容呈现到这些部分中。如果是这种情况,那么如果侧栏内容在多个视图中共享,那么我必须在视图文件中复制该代码。我的视图文件应该不知道它

我真的在挖掘这个新的Razor视图引擎。。。对于刚从另一个网络平台来的人来说,新的MVC 3的努力开始让我感到宾至如归

我的问题是关于节,我认为可以在布局中定义节并向其中注入内容,但从我看到的所有示例来看,这似乎是从视图中完成的。对我来说,从控制器为每个部分分配内容或输出更有意义

因此,如果我有一个包含侧栏的布局,我希望将小部件加载到我的视图文件中,那么我不应该负责将内容呈现到这些部分中。如果是这种情况,那么如果侧栏内容在多个视图中共享,那么我必须在视图文件中复制该代码。我的视图文件应该不知道它们旁边的侧栏中呈现了什么内容

理想情况下,我希望从我的控制器将内容分配到侧栏中的各个部分,因此我的问题是,这可能吗?

在ASP.NET MVC(以及其他基于MVC的web应用程序体系结构)中,控制器准备由视图呈现的数据。如何、在何处、甚至何时呈现这些数据是视图要解决的问题。当然,这更多的是一个关于建筑设计的讨论

ASP.NET MVC的一个优点是其“约定优先于配置”的观点(尤其是使用Razor),它允许您更改许多事情的行为方式。我认为没有
视图选项,但您可以创建一个基于节的ViewModel,然后使用一些通用主视图来拆分此ViewModel并将正确的数据发送到正确的局部视图。此节的视图模型甚至可以保存必须呈现的HTML,因为Razor可以用于在.cshtml文件之外呈现HTML。有关更多信息,请访问Andrew Nures的博客:

正如您所见,这将许多责任从视图转移到控制器。我自己喜欢渲染与控制器完全分离,因为这样我就可以通过更改数据的渲染方式来构建完全不同的网站。

在ASP.NET MVC(以及其他基于MVC的web应用程序体系结构)中,控制器准备由视图渲染的数据。如何、在何处、甚至何时呈现这些数据是视图要解决的问题。当然,这更多的是一个关于建筑设计的讨论

ASP.NET MVC的一个优点是其“约定优先于配置”的观点(尤其是使用Razor),它允许您更改许多事情的行为方式。我认为没有
视图选项,但您可以创建一个基于节的ViewModel,然后使用一些通用主视图来拆分此ViewModel并将正确的数据发送到正确的局部视图。此节的视图模型甚至可以保存必须呈现的HTML,因为Razor可以用于在.cshtml文件之外呈现HTML。有关更多信息,请访问Andrew Nures的博客:


正如您所见,这将许多责任从视图转移到控制器。我自己喜欢渲染与控制器完全分离,因为这样我就可以通过更改数据的渲染方式来创建非常不同的网站。

为什么从控制器执行此操作更有意义?控制器通常不应该有任何视图逻辑;他们只是负责选择一个视图并将其交给模型。为什么不创建一个局部视图并根据需要在视图中使用它呢?控制器确实有视图逻辑,如果您仔细考虑,它们会初始化视图模型,在某些情况下为其赋值,然后调用使用它的相应视图。各部分也应如此。还想补充一点,注入每个部分的内容可能有自己的模型,因此,控制器必须确保每个模型都可用于视图。当涉及到控制器与视图时,我倾向于认为控制器决定渲染什么数据,视图决定如何渲染数据。我非常喜欢这种关注点的分离。但MVC仍然有模型部分。在我看来,模型(而不是视图模型)和视图应该非常分开。模型知道如何获取数据(控制器只是告诉他们这样做),视图知道如何显示数据,但不知道数据来自何处。为什么从控制器执行此操作更有意义?控制器通常不应该有任何视图逻辑;他们只是负责选择一个视图并将其交给模型。为什么不创建一个局部视图并根据需要在视图中使用它呢?控制器确实有视图逻辑,如果您仔细考虑,它们会初始化视图模型,在某些情况下为其赋值,然后调用使用它的相应视图。各部分也应如此。还想补充一点,注入每个部分的内容可能有自己的模型,因此,控制器必须确保每个模型都可用于视图。当涉及到控制器与视图时,我倾向于认为控制器决定渲染什么数据,视图决定如何渲染数据。我非常喜欢这种关注点的分离。但MVC仍然有模型部分。在我看来,模型(而不是视图模型)和视图应该非常分开。模型知道如何获取数据(控制器只是告诉他们这样做),视图知道如何显示数据,但不知道数据来自何处。我使用视图模型,我想我不知道如何在使用视图模型时跨多个动作使用视图。根据你们所说的,我要么在多个视图页面上复制相同的代码,要么在多个操作中使用相同的视图页面。或者可能在视图模型中为每个视图复制代码。我不相信我应该把代码放在“可能的业务逻辑”的视图中,以决定在何时何地为p提供什么