Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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 需要在局部视图(MVC4)之前渲染布局_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 需要在局部视图(MVC4)之前渲染布局

Asp.net mvc 需要在局部视图(MVC4)之前渲染布局,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,首先,这是在ASP.NETMVC4中使用razor实现的 我目前在解决方案的所有页面上都使用了一个布局 布局包括加载内容的@RenderBody() my index.cshtml包含一个局部视图,该局部视图需要一些数据,这些数据只有在执行布局中的代码后才会存在 我在局部视图的开始和布局的开始处放置了断点,然后首先呈现局部视图,有没有办法修改它?可能没有,因为我认为这可能会在框架中造成比它所能解决的更微妙的问题 如果没有更多的细节,这里真正的问题似乎是这样一个事实,即这些数据只有在布局呈现之后才

首先,这是在ASP.NETMVC4中使用razor实现的

我目前在解决方案的所有页面上都使用了一个布局

布局包括加载内容的
@RenderBody()

my index.cshtml包含一个局部视图,该局部视图需要一些数据,这些数据只有在执行布局中的代码后才会存在


我在局部视图的开始和布局的开始处放置了断点,然后首先呈现局部视图,有没有办法修改它?

可能没有,因为我认为这可能会在框架中造成比它所能解决的更微妙的问题

如果没有更多的细节,这里真正的问题似乎是这样一个事实,即这些数据只有在布局呈现之后才会存在。视图(包括布局)实际上应该只绑定到已经处理过的数据。视图中不应该有额外的逻辑,除了将给定的内容呈现到UI中之外,什么都没有


当您进入控制器中的
returnview()
时,所有业务逻辑处理都应该完成,您应该只是从完成的模型构建UI。简而言之,布局中的这种逻辑可能属于模型。

。。。或在控制器中。:)@主持人:不太可能,但我认为可能。但是请记住,控制器要轻,模型要重。关于这个主题的文章太多了,我不喜欢视图模型包含太多的逻辑。@David在我的例子中,在布局视图中处理一些会话数据很有意义。为什么?因为我的布局没有一个可以包含我所需内容的控制器,而且我似乎无法从我的模型访问会话。有什么建议吗?在ASP.NET MVC中,HTTP相关变量作为控制器属性出现。例如,您可以创建一个基本控制器,所有控制器都从该基本控制器继承,该基本控制器在其构造函数中将
this.Session[“Username”]
数据放入
ViewBag.Username
,然后您可以在通过基本控制器呈现的任何页面上引用该ViewBag属性。另一种方法是使用
LoggedInUsername
属性创建所有模型都从中继承的基本
ViewModel
,然后再次从基本控制器填充该属性,但传递该基本模型需要更多的工作。