Asp.net 5 - ViewResult 中的 VNext ViewData 属性 为 Null

Asp.net 5 - VNext ViewData property in ViewResult is Null

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

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

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

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

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

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

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

如有任何帮助,我们将不胜感激。

谢谢

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

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

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