我写了一个非常简单的Actionresult,它派生自ViewResult
public class FormResult : ViewResult
{
public override void ExecuteResult(ControllerContext context)
{
context.Controller.ViewBag.Form = "value";
base.ExecuteResult(context);
}
}
它基本上只是为ViewBag添加一个值。
然后我将在动作方法中返回它。
public ActionResult Index()
{
return new FormResult();
}
问题是,ViewBag在适当的视图中为空。
我在这里错过了什么吗?
答案 0 :(得分:4)
您必须从控制器传递ViewData
。
public ActionResult Index()
{
return new FormResult
{
ViewData = ViewData
};
}
如果您看到View()
方法的源代码,那就是
protected internal virtual ViewResult View(string viewName, string masterName, object model)
{
if (model != null)
{
ViewData.Model = model;
}
return new ViewResult
{
ViewName = viewName,
MasterName = masterName,
ViewData = ViewData,
TempData = TempData,
ViewEngineCollection = ViewEngineCollection
};
}
从控制器传递ViewData
,TempData
,..