事情就是这样。我有一个 MVC 操作,并且在该操作上,我应用了一个自定义 ActionFilterAttribute 来使反序列化工作。现在,我想做的是根据在此视图中设置的 ViewBag.Title 设置一些标题。
我尝试将 ViewResult 包装在我自己的中,并覆盖 ExecuteResult 但 ViewBag 始终为空:-(。
这是否可能,或者一旦执行 _layout,MVC 引擎是否会重置 ViewBag?
更新: 让我发布一些代码示例,以更清楚地说明我想要做什么。我有一个电子邮件服务,我从 MVC 视图呈现正文。所以我的观点是这样的:
@{ViewBag.Title = "EventCreated";}
Something that ressembles an email message here.
现在我有一个控制器,它的动作看起来像这样:
public ActionResult HelloWorld(MailView<HelloWorldMessage> msg)
{
Response.Headers["subject"] = "Test subject";
return View(msg);
}
我想让 Headers["subject"] 语句看起来像 Response.Headers["subject"] = ViewBag.Title; 我希望能够让 View 认为它正在处理一个普通的网页。
我尝试使用 ActionFilterAttribute 并覆盖 OnResultExecuted 但无法使其正常工作。
一种可能的选择是在布局页面上设置它,并根据某些标准实际决定使用哪种布局。这样我仍然可以让 Reponse 远离我的观点,但让它相当干净。你怎么看?
谢谢, 安泽