将视图渲染到字符串时出错

时间:2016-08-11 23:39:52

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

我正在尝试在ASP Net Core 1中呈现一个字符串的视图但仍然收到错误:

  

运营商'!'不能应用于''

类型的操作数

在这一行:

  

view.RenderAsync(viewContext).GetAwaiter()调用getResult();

我很困惑为什么会出现这种情况并寻求一些帮助。 我在这个领域看到的很多例子和帮助与RC1有关。我们在这里使用最终的核心1.0。

我正在使用我在网上找到的以下代码:

    public ViewRender(
        IRazorViewEngine viewEngine,
        ITempDataProvider tempDataProvider,
        IServiceProvider serviceProvider)
    {
        _viewEngine = viewEngine;
        _tempDataProvider = tempDataProvider;
        _serviceProvider = serviceProvider;
    }


    public string Render<TModel>(string name, TModel model, ActionContext actionContext)
    {

        var viewEngineResult = _viewEngine.FindView(actionContext, name, true);

        if (!viewEngineResult.Success)
        {
            throw new InvalidOperationException(string.Format("Couldn't find view '{0}'", name));
        }

        var view = viewEngineResult.View;

        using (var output = new StringWriter())
        {
            var viewContext = new ViewContext(
                actionContext,
                view,
                new ViewDataDictionary<TModel>(
                    metadataProvider: new EmptyModelMetadataProvider(),
                    modelState: new ModelStateDictionary())
                {
                    Model = model
                },
                new TempDataDictionary(
                    actionContext.HttpContext,
                    _tempDataProvider),
                output,
                new HtmlHelperOptions());

            view.RenderAsync(viewContext).GetAwaiter().GetResult();

            return output.ToString();
        }
    }
}

0 个答案:

没有答案