gpt4 book ai didi

C# 在没有 Controller 的情况下渲染局部 View

转载 作者:太空狗 更新时间:2023-10-29 17:44:43 25 4
gpt4 key购买 nike

我在没有 Controller 类的情况下使用“RenderPartialViewToString”时遇到问题。

我目前必须在应用程序启动时创建 HTML,这需要制作模型、制作 View 并将 View 转换为 HTML 字符串。

在我看来,它使用了 HTML Helper 函数/扩展,它似乎只有在有 Controller 的情况下才会存在。

任何人都可以阐明我如何做到这一点吗?

最佳答案

Razor.Parse 现已弃用。使用 3.5 版的 Razor 引擎,您将遵循此处概述的步骤: https://antaris.github.io/RazorEngine/Upgrading.html

下面的文字是从上面的链接逐字复制的:

var result = Razor.Parse(razorTemplate, model, cache_name)

现在是(当模型类型已知或您想在启动时预编译时)

// Once at startup (not required when using an ITemplateManager which knows how to resolve cache_name)
Engine.Razor.AddTemplate(cache_name, razorTemplate)
// On startup
Engine.Razor.Compile(cache_name, typeof(MyModel) /* or model.GetType() or null for 'dynamic'*/)

// instead of the Razor.Parse call
var result = Engine.Razor.Run(cache_name, typeof(MyModel) /* or model.GetType() or null for 'dynamic'*/, model)

或者(当你想要惰性编译时,比如 Parse)

// Once at startup (not required when using an ITemplateManager which knows how to resolve cache_name)
Engine.Razor.AddTemplate(cache_name, razorTemplate)

// instead of the Razor.Parse call
var result = Engine.Razor.RunCompile(cache_name, typeof(MyModel) /* or model.GetType() or null for 'dynamic'*/, model)

语义等价的一行代码是(仅用于快速开始使用 RazorEngine):

// This will just call AddTemplate for you (every time), note that the ITemplateManager has to support AddTemplate
// and it has to handle multiple calls to AddTemplate gracefully to make this work.
// The default implementation will throw an exception when you use the same cache_name for different templates.
var result = Engine.Razor.RunCompile(razorTemplate, cache_name, model.GetType() /* typeof(MyModel) or or null for 'dynamic'*/, model

关于C# 在没有 Controller 的情况下渲染局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com