全部,
我有一个 MVC _Layout.cshtml 调用:
@Html.Action("GetActionStrip", "Vehicles")
我还有一个加载一些视图的控制器。
我的问题是我有一个名为GetVehicleDetails的控制器操作,它通过 ID 获取车辆。
行动:
@Html.Action("GetActionStrip", "Vehicles")
需要首先加载 GetVehicleDetails,因为它需要将车辆 ID 放入会话中。
这不起作用:
@Html.Action("GetActionStrip", "Vehicles")
在 GetVehicleDetails 之前加载。
@Html.Action("GetActionStrip", "Vehicles")
需要在多个视图上,这就是我将它放在 _Layout 文件中的原因。
我可以通过放置:
@Html.Action("GetActionStrip", "Vehicles")
在每个视图上我都需要它,然后它们以正确的顺序加载。即.. 控制器操作 GetVehicleDetails 将车辆 ID 设置为会话,然后:
@Html.Action("GetActionStrip", "Vehicles")
读取会话值。
有没有人知道我是否可以按照我想要的方式进行操作,或者我是否必须将我的@Html.Action 放在每种违反 DRY 原则的视图上。
谢谢RuSs
保罗,我试图给你写评论,但字数限制杀死了我。这是我的评论:
保罗,
感谢你的信息。我了解您所写的内容,但在我继续并尝试实施类似的事情之前,我只想确保您完全理解该场景。
您的方案是否会满足以下事实:需要会话值的代码是从我的_Layout(可以说是母版页)中的 @Html.Action 调用的,而我需要我的控制器获取操作以接收参数并将此参数设置为会话.
据我了解,_Layouts(母版页)首先加载,因此我的 @Html.Action 将运行并查找会话值。但是,由于此代码位于 _Layout 中,它将首先运行,因此我的控制器上的 GET 尚未从传入参数的操作中设置会话。
注意:我的 _Layout 没有它自己的控制器(不确定这是否重要)
谢谢RuSs