正如我已經在這裏一些線程一些報價討論這樣的:
你能否解釋一下原因,爲什麼你需要訪問直接在接口的實例? 我決定刪除它的直接訪問權限,因爲它不容易使用,而且大部分都不會做你認爲它的作用。如果您使用隔離API,它也會導致問題。
https://github.com/Antaris/RazorEngine/issues/225
如果其有關設置自定義佈局適當的升級路徑是使用自定義的TemplateBase
並利用ViewBag的(對鏈接問題作爲討論)。
另一個更有趣的用例是獲取模板的數據OUT。 這在這裏詳細討論:https://github.com/Antaris/RazorEngine/issues/238
這裏是如何從給定模板走出「主題」一個代碼示例
模板:
@model HelloWorldModel
@{
Layout = "CI";
Subject = "Hello World";
}
Hello @Model.Name,<br/>
this is a test email...
代碼(簡體)
class CustomDataHolder {
public string Destination { get; set; }
public string Subject { get; set; }
}
// In the custom TemplateBase class:
public string Subject { get { return Viewbag.DataHolder.Subject; }; set { Viewbag.DataHolder.Subject = value; } }
// Your code
public static Task SendEmailAsync<T>(string templateName, string destination, T model)
{
var holder = new CustomDataHolder();
dynamic viewbag = new DynamicViewBag();
viewbag.DataHolder = holder;
holder.Destination= destination;
var body = Engine.Razor.Run(templateName, typeof(T), model, (DynamicViewBag)viewbag);
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress(holder.Destination));
msg.Subject = holder.Subject;
msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html));
SmtpClient smtpClient = new SmtpClient();
return smtpClient.SendMailAsync(msg);
}
希望這涵蓋你的用例。否則,請向您的問題添加更多信息,以瞭解您嘗試使用ITemplate
實例實現的目標....