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

时间:2015-07-13 16:42:48

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

我正在使用Asp.net 5来处理一个小应用程序,我从一个orchestrator返回一个ViewResult时遇到了一些麻烦。

在以前版本的MVC中我们已经完成了这个:

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

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

我能让这个工作的最简单方法是:

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

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

任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:-1)

我设法在github上得到了答案。无需IModelMetadataProvider或已存在的ViewData对象即可创建viewdata对象。

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

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