【问题标题】:Asp.net 5 - VNext ViewData property in ViewResult is NullAsp.net 5 - ViewResult 中的 VNext ViewData 属性为 Null
【发布时间】:2015-07-17 01:15:35
【问题描述】:

我将 Asp.net 5 用于一个小型应用程序,但在从协调器返回 ViewResult 时遇到了一点麻烦。

在以前的 MVC 版本中我们已经这样做了:

 return new ViewResult
        {
            ViewName = "Index",
            ViewData = {Model = _formViewModelBuilder.BuildModel()}
        };

在 MVC 6 中,这会引发空引用异常。设置 ViewData 的模型属性无效,因为 ViewData 的值为 null?我相信这与依赖注入有关,但我无法在任何地方找到关于为什么会发生这种行为的具体解释。

我可以让它工作的最简单的方法是:

return new ViewResult
            {
                ViewName = "Index",
                ViewData = new ViewDataDictionary<FormViewModel>(ViewData, model)
            };

这使用 Microsoft.AspNet.Mvc.Controller.ViewData 属性。我可以将此属性传递给协调器,但我不确定这是否完全错误并且我在这里错过了一个技巧?

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc


    【解决方案1】:

    我设法在 github 上得到了答案。如果没有 IModelMetadataProvider 或现有的 ViewData 对象,则无法创建 viewdata 对象。

    我通过将 ViewData 对象(控制器上的默认属性)传递给编排器并基于该对象创建一个新对象来解决了这个问题。

    可在此处找到完整的详细信息: https://github.com/aspnet/Mvc/issues/2814

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 2015-10-12
      • 2015-05-02
      • 2015-01-29
      • 2015-08-06
      • 1970-01-01
      相关资源
      最近更新 更多