3

ViewResultから派生した非常に単純なActionresultを作成しました

    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が空であることです。

私はここで何かが欠けていますか?

4

1 に答える 1

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.. はコントローラーから渡されます。

于 2012-06-19T11:17:26.133 に答える