Mik*_*ynn 10 asp.net-mvc razor razor-2 razorengine
我重复使用相同的部分RazorEngine电子邮件RazorEngine.Parse,但是当我在常规视图中使用相同的Partial时,它new RazorEngine.Text.RawString不起作用,并且不会忽略HTML.我无法使用,Html.Raw因为RazorEngine无法阅读它.我怎么能绕过这个?
<p>
@(new RazorEngine.Text.RawString(Model.Body))
</p>
Run Code Online (Sandbox Code Playgroud)
在常规的asp.net mvc razor视图中显示底部标记.
<p>
Welcome!<br/><br/>Body
</p>
Run Code Online (Sandbox Code Playgroud)
您可以ITemplateServiceConfiguration在创建实例时指定RazorEngineService,如项目的 git存储库中所示。
存储库中的代码:
/// <summary>
/// A simple helper demonstrating the @Html.Raw
/// </summary>
public class MyHtmlHelper
{
/// <summary>
/// A simple helper demonstrating the @Html.Raw
/// </summary>
public IEncodedString Raw(string rawString)
{
return new RawString(rawString);
}
}
/// <summary>
/// A simple helper demonstrating the @Html.Raw
/// </summary>
public abstract class MyClassImplementingTemplateBase<T> : TemplateBase<T>
{
/// <summary>
/// A simple helper demonstrating the @Html.Raw
/// </summary>
public MyClassImplementingTemplateBase()
{
Html = new MyHtmlHelper();
}
/// <summary>
/// A simple helper demonstrating the @Html.Raw
/// </summary>
public MyHtmlHelper Html { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
用法:
class Program
{
static void Main(string[] args)
{
var config = new TemplateServiceConfiguration();
config.BaseTemplateType = typeof(MyClassImplementingTemplateBase<>);
using (var service = RazorEngineService.Create(config))
{
string template = "<p>@Html.Raw(Model.Body)</p>";
var result = service.RunCompile(template, "templateKey", null, new { Body = "Welcome!<br /><br /><Label>Hello</label>" });
Console.WriteLine(result);
}
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
ITemplateServiceConfiguration您唯一需要记住的是在创建 的实例时提供对象RazorEngineService。
PS: @(new RazorEngine.Text.RawString(Model.Body))在部分视图中不起作用,因为它被环绕@()并且指令中的任何字符串在写入输出流之前都将被编码。
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |