J'utilise Razor Engine pour compiler dynamiquement ma vue de rasoir à partir de la base de données. Maintenant en utilisant Razor Engine 3.7.3. J'ai vu quelques messages sur la façon de lire html helper et de le compiler, mais c'était pour l'ancienne version du moteur de rasoir.Résoudre html helper
J'ai lu environ ITemplateServiceConfiguration
, mais je ne peux pas vraiment comprendre comment cela fonctionne soit.
Ma question est, comment puis-je runcompile() razorengine (v3.7.3) avec succès @Html (helper Html), @url (URL Helper), et @section (comme @section Scripts, @section en vedette) dans le contenu html de ma base de données?
Les choses que j'ai faites jusqu'ici. J'ai essayé d'implémenter un code que j'ai reçu d'un autre post. Le code était destiné à une ancienne version du moteur de rasoir. Il a suggéré que nous créons notre propre classe d'aide:
public class RazorHtmlHelper
{
public IEncodedString Partial(string viewName)
{
ITemplate template = RazorEngine.Razor.Resolve(viewName);
ExecuteContext ec = new ExecuteContext();
RawString result = new RawString(template.Run(ec));
return result;
}
}
public class RazorUrlHelper
{
public string Encode(string url)
{
return System.Uri.EscapeUriString(url);
}
}
Et puis il a suggéré de créer notre propre templating
public class RazorTemplateBase<T> : TemplateBase<T>
{
private RazorUrlHelper _urlHelper = new RazorUrlHelper();
private RazorHtmlHelper _htmlHelper = new RazorHtmlHelper();
public RazorUrlHelper Url
{
get
{
return this._urlHelper;
}
}
public RazorHtmlHelper Html
{
get
{
return this._htmlHelper;
}
}
}
Et avant l'analyse, nous devons définir notre config:
Razor.SetTemplateService(new TemplateService(new TemplateServiceConfiguration()
{
BaseTemplateType = typeof(RazorTemplateBase<>)
};
));
result = RazorEngine.Razor.Parse(templateText, model);
Il n'y a pas de problème avec RazorUrlHelper, mais RazorHtmlHelper ne peut pas lire correctement ces codes car il est obsolète:
ITemplate template = RazorEngine.Razor.Resolve(viewName);
ExecuteContext ec = new ExecuteContext();
RawString result = new RawString(template.Run(ec));
Les codes ci-dessus sont de this post
pouvez-vous montrer ce que vous avez fait jusqu'à présent? Alors que nous pouvons vous aider mieux –
Ok je l'ai édité, s'il vous plaît examiner. –
Copie possible de [RazorEngine WebApiTemplateBase @ Url.Content()] (http://stackoverflow.com/questions/32461041/razorengine-webapitemplatebase-url-content) – matthid