相关疑难解决方法(0)

将Razor页面渲染为字符串

问题:

我需要将Razor页面部分渲染为字符串.

为什么我要这个:

我想创建一个控制器操作,该操作使用包含部分视图和其他可选参数的JSON进行响应.

尝试:

我熟悉以下将View呈现为字符串的示例:https://github.com/aspnet/Entropy/blob/dev/samples/Mvc.RenderViewToString/RazorViewToStringRenderer.cs

但是,它与Pages不兼容,因为它只在Views目录中搜索,所以即使我给它一个绝对的路径,它试图找到我的_Layout.cshtml(它甚至不应该这样做!)并失败找到它.

我试图修改它以便渲染页面,但是在尝试渲染时,我最终在部分中获得了ViewData的NullReferenceException.我怀疑它与NullView有关,但我不知道该放在那里(RazorView的构造函数需要许多我不知道如何正确获取的对象).

代码:

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0
// Modified by OronDF343: Uses pages instead of views.

using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Mvc.ViewFeatures.Internal;
using Microsoft.AspNetCore.Routing;

namespace TestAspNetCore.Services
{
    public class RazorPageToStringRenderer
    {
        private readonly IRazorViewEngine _viewEngine;
        private readonly ITempDataProvider _tempDataProvider;
        private …
Run Code Online (Sandbox Code Playgroud)

c# razor asp.net-core asp.net-core-2.0 razor-pages

15
推荐指数
3
解决办法
2923
查看次数

Asp.Net Core 将 ViewComponent 渲染为变量

我正在尝试渲染ViewComponentASP.NET Core 3.0(页面)中服务中的字符串。

I found two partial solutions to my problem, but both are for older pre 3.0 version and have some issues that I do not know how to resolve.

  • First one is taken from GitHub Gist, but designed with controllers in mind and NullView was removed 3.0 (and is really hard to find any reference on it).
  • The second option is here, but fails one line 42 (no view is found). I believe that …

c# asp.net-core

5
推荐指数
1
解决办法
2734
查看次数

标签 统计

asp.net-core ×2

c# ×2

asp.net-core-2.0 ×1

razor ×1

razor-pages ×1