【问题标题】:Viewbag not working in Explicit Partial ViewViewbag 在显式局部视图中不起作用
【发布时间】:2013-03-05 15:36:50
【问题描述】:

我有一个列表视图并且我想在页面中添加一个创建部分。

@model IEnumerable <blah.Domain.Entities.blah>

@Html.Partial("_Quickblah", new blah.Domain.Entities.blah());

  public ViewResult _Quickblah()
        {
            ViewBag.CategoryID = new SelectList(Repository.Categorys, "CategoryID", "Title");

            Blah blah = new Blah () { CreatedDate = DateTime.Now };

            return View(blah);
        }

我得到了错误

没有“IEnumerable”类型的 ViewData 项 有键“CategoryID”。

我该如何解决这个问题?

【问题讨论】:

  • 您将模型传递到其中包含的部分?

标签: c# asp.net-mvc-4 viewbag


【解决方案1】:

当您调用Html.Partial 时,您的_Quickblah 控制器操作不会被调用,当然ViewBag.CategoryID 也不会被分配(因为我假设在呈现此视图的主控制器操作中您没有设置它)。你应该改用Html.Action

@Html.Action("_Quickblah")

此外,在您的 _Quickblah 操作中,请确保您返回的是局部视图:

public ActionResult _Quickblah()
{
    ViewBag.CategoryID = new SelectList(Repository.Categorys, "CategoryID", "Title");
    Blah blah = new Blah () { CreatedDate = DateTime.Now };
    return PartialView(blah);
}

【讨论】:

  • 我得到的错误“CS1928:'System.Web.Mvc.HtmlHelper>'不包含'Partial'的定义' 和最好的扩展方法重载 'System.Web.Mvc.Html.PartialExtensions.Partial(System.Web.Mvc.HtmlHelper, string, object, System.Web.Mvc.ViewDataDictionary)' 有一些无效参数
  • @DarinDimitrov,我们可以使用@Html.Action() 吗?或者当我们更喜欢哪个更好?
  • @Evildommer5,您应该使用Html.Action() 而不是Html.Partial()。我已经更新了我的答案。
  • 您是否将@Html.Partial 替换为@Html.Action
  • 对于同一个控制器,您是否有一个名为 _Quickblah.cshtml 的视图?异常堆栈跟踪中还有什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多