在我的网站上,我有很多内容页面。他们中的大多数是纯文本,但有些确实包含链接和类似的东西。 我正在使用wordpress作为我的后端cms,我存储页面的主体并使用webrequests我将帖子的内容加载到通用的ContentModel中:
public class WordPressPostModel
{
public string Title;
public string Content;
public string postId;
public string slug;
public string lang;
public string CategorySlug;
public DateTime CacheDate = new DateTime();
public bool NotFound = true;
public WordPressPostModel()
{
}
}
如果我可以将内容作为(部分)cshtml视图处理并获得ActionLinks和其他Html Helpers呈现,那将是多么美妙的事情。有没有办法做到这一点?
解决方案使用RazorEngine作为Darin建议:
由于Razor引擎不支持html助手,因此您必须通过在自定义模板库中调用它们来解决此问题,例如。
public abstract class MyCustomTemplateBase<T> : TemplateBase<T>
{
public string ActionLink(string linkText, string actionName, string controllerName)
{
string link = HtmlHelper.GenerateLink(HttpContext.Current.Request.RequestContext, RouteTable.Routes, linkText, "Default", actionName, controllerName, null, null);
return link;
}
}
然后像这样使用它:
Razor.SetTemplateBase(typeof(MyCustomTemplateBase<>));
string raw = HttpUtility.HtmlDecode(Content);
string result = Razor.Parse(raw, this);