asp.net-core - ASP.NET Core 中间件能否使用 Razor 有条件地呈现 HTML?
问题描述
我正在将 ASP.NET HTTP 处理程序移植到 ASP.NET Core 中间件类。大多数时候,处理程序以简单的 UTF-8 文本响应进行响应。有时,HTTP 处理程序会在 ASP.NET 状态下填充一个大对象图Session
,然后Response.Redirect
对 ASPX Web 表单页面执行操作。Web 表单页面从状态中提取对象图Session
并呈现它。
在我看来,重定向是不必要的,而且它迫使我在我的应用程序中包含会话状态,这是我不想要的。我想要的是将 Web 表单页面转换为 Razor 页面,然后以某种方式直接调用 Razor 页面来呈现我的对象图。我的中间件能否在本质上将控制权交给 Razor,指定:“这是我希望你渲染的 cshtml 页面,这是一个对象图?”
我可以轻松地创建PageModel
具有属性的类ObjectGraph
,但是如何让 Razor 控制以呈现该 cshtml 页面?
public async Task Invoke(HttpContext ctx) {
var objectGraph = ComputeObjectGraph(ctx.Request);
if (IsSimpleRendering(ctx.Request)) {
async DoSimpleRendering(objectGraph, ctx.Response);
} else {
var razorPageModel = new HtmlRendererModel(objectGraph);
// TODO: hand off to Razor, using "htmlrenderer.cshtml" as a template.
// async DoHtmlRendering("htmlrenderer.cshtml", razorPageModel, ctx);
}
}
解决方案
推荐阅读
- java - WildFly 中多次生成的工作任务
- r - 按组将 NA 替换为 sample()
- vba - 如何更改此代码以在 Word 而不是 Excel 上工作
- swift - 数组元素分配导致昂贵的 _ArrayBufferProtocol.init(copying:)
- javascript - 使用 location.href 定位父级
- dns - 我可以检测用户提供的电子邮件是否实际上是分发列表?
- c# - 从 .net 桌面应用程序运行 ECS 任务
- c++ - 无法跨 dll 导出高兴的符号
- c++ - 虚幻引擎和 Clion(无法解析某些符号)
- java - 我对检查数字是否为素数的程序的逻辑有疑问。(我必须使用3种方法)