从外部存储的.cshtml解析Rarzor Html Helper

时间:2011-07-28 06:03:32

标签: razor

在我的网站上,我有很多内容页面。他们中的大多数是纯文本,但有些确实包含链接和类似的东西。 我正在使用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);

1 个答案:

答案 0 :(得分:3)

您可以查看RazorEngine