Asp.net mvc 在基础视图设置ViewBag.Title后,如何访问它?

Asp.net mvc 在基础视图设置ViewBag.Title后,如何访问它?,asp.net-mvc,asp.net-mvc-3,viewbag,Asp.net Mvc,Asp.net Mvc 3,Viewbag,事情是这样的。我有一个MVC操作,在该操作上,我应用了一个定制的ActionFilterAttribute来实现反序列化。现在,我想做的是,基于视图中设置的ViewBag.Title设置一些标题 我已尝试将ViewResult包装在自己的文件中,并覆盖ExecuteSult,但ViewBag始终为空:-( 这是可能的还是MVC引擎在执行_布局后会重置ViewBag 更新: 让我发布一些代码示例,以更清楚地说明我想做什么。我有一个电子邮件服务,在那里我从MVC视图渲染主体。因此我的视图如下所示:

事情是这样的。我有一个MVC操作,在该操作上,我应用了一个定制的ActionFilterAttribute来实现反序列化。现在,我想做的是,基于视图中设置的ViewBag.Title设置一些标题

我已尝试将ViewResult包装在自己的文件中,并覆盖ExecuteSult,但ViewBag始终为空:-(

这是可能的还是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);
        }
现在我有了一个控制器,其动作如下:

@{ViewBag.Title = "EventCreated";}

Something that ressembles an email message here.
 public ActionResult HelloWorld(MailView<HelloWorldMessage> msg)
        {
            Response.Headers["subject"] = "Test subject";

            return View(msg);
        }
public ActionResult HelloWorld(MailView msg)
{
响应。标题[“主题”]=“测试主题”;
返回视图(msg);
}
我想让Headers[“subject”]语句看起来像Response.Headers[“subject”]=ViewBag.Title;并且我希望能够让视图认为它正在处理一个正常的网页

我尝试使用ActionFilterAttribute并重写OnResultExecuted,但无法使其工作

一个可能的选择是在布局页面上设置它,并根据特定的标准实际决定使用哪种布局。这样,我仍然可以使响应内容远离我的视图,但使其更干净。你认为呢

谢谢,
Anže

试试这个-分配视图结果的输出

var output = View(msg); //do your other viewbag stuff here return output; var输出=视图(msg); //在这里做你的其他取景包 返回输出; 尽管如此,为什么要这么做?当你说“我希望能够让视图认为它在处理一个正常的网页”时,我没有理解

编辑: 为什么不在视图中通过一个helper方法来设置它呢? 阿拉

@{ 设置标题(“主页”); } 及

@功能{ 公共无效集合标题(字符串标题) { ViewBag.Title=标题; 响应。标题。添加(“标题”,标题); } }
我很困惑,我们能看到一些代码指向您想要完成的事情吗?好的,我添加了一个示例,希望能让它更清楚。更好的是?如果我理解正确,您想从视图本身更新ViewBag吗?@slandau我想在控制器上有一些东西,在视图渲染后从ViewBag读取数据。因此,流程是->控制器执行操作->视图被渲染和解析,相应地更新视图包->控制器(或其他)从ViewBag中读取数据并对数据执行某些操作。为什么不使用所需的信息从视图中调用AJAX,然后可以使用另一个操作方法来处理这些信息?不,这不起作用。我尝试过,但如果我没记错的话,在呈现结果之前不会执行视图。我会尝试最后,这就是我采取的方法。