gpt4 book ai didi

asp.net-mvc - RazorEngine 和解析物理 View 文件总是导致异常

转载 作者:行者123 更新时间:2023-12-03 23:22:26 24 4
gpt4 key购买 nike

我有以下 RazorEngine 调用:

public class RazorEngineRender
{
public static string RenderPartialViewToString(string templatePath, string viewName, object model)
{
string text = System.IO.File.ReadAllText(Path.Combine(templatePath, viewName));
string renderedText = Razor.Parse(text, model);
return renderedText;
}
}

这是从以下位置调用的:
_emailService.Render(TemplatePath, "Email.cshtml", new { ActivationLink = activationLink });

我也有这个 View 文件(email.cshtml):
    <div>
<div>
Link: <a href="@Model.ActivationLink" style="color:#666" target="_blank">@Model.ActivationLink</a>
</div>
</div>

当调用 Razor.Parse() 时,我总是得到:
无法编译模板。检查错误列表以获取详细信息。

错误列表是:
error CS1061: 'object' does not contain a definition for 'ActivationLink' and no extension method 'ActivationLink' accepting a first argument of type 'object' could be found 

我在阳光下尝试了所有方法,包括尝试使用具体类型而不是匿名类型,在 View 文件顶部声明 @Model 行但没有运气。我想知道是图书馆有错还是肯定是我?

顺便说一句,我所指的 razorengine 可以在 codeplex 上找到:
RazorEngine

最佳答案

如果您像这样调用电话:

Razor.Parse(System.IO.File.ReadAllText(YourPath), 
new { ActivationLink = activationLink });
那应该给你正确的输出。但是在我看到上面发布的您的方法后,我将能够确定问题出在哪里。
更新
将您的方法更改为以下内容:
public class RazorEngineRender {
public static string RenderPartialViewToString<T>(string templatePath, string viewName, T model) {
string text = System.IO.File.ReadAllText(Path.Combine(templatePath, viewName));
string renderedText = Razor.Parse(text, model);
return renderedText;
}
}
你可以像上面那样调用它。
它不起作用的原因是因为您告诉解析器模型是对象类型,而不是传递它真正的类型。在这种情况下是匿名类型。

关于asp.net-mvc - RazorEngine 和解析物理 View 文件总是导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249258/

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