Parse Rarzor Html Helper из хранимых извне .cshtml - PullRequest
3 голосов
/ 28 июля 2011

На моем сайте довольно много контентных страниц. Большинство из них чисто текстовые, но некоторые содержат ссылки и тому подобное. Я использую 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);

1 Ответ

3 голосов
/ 28 июля 2011

Вы можете взглянуть на RazorEngine .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...