На моем сайте довольно много контентных страниц. Большинство из них чисто текстовые, но некоторые содержат ссылки и тому подобное.
Я использую WordPress в качестве моего backend-cms, где я храню тело страниц и использую веб-запросы, я загружаю содержимое поста в общий 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-помощники. Есть ли способ сделать это?
РЕШЕНИЕ с использованием RazorEngine, как предложил Дарин:
Поскольку движок 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);