C# 从控制器检索生成的ActionLink html

C# 从控制器检索生成的ActionLink html,c#,asp.net-mvc,C#,Asp.net Mvc,我想在一些文本中嵌入一个操作链接,这些文本将从我的控制器存储在数据库中。我试图通过在控制器上下文中实例化一个新的HtmlHelper来实现这一点: //Controller public ActionResult Foo() { var x = ThemedActionLink(/*Parameters*/); //save x to database return View(); } //Custom HtmlHelper code private class Emp

我想在一些文本中嵌入一个操作链接,这些文本将从我的控制器存储在数据库中。我试图通过在控制器上下文中实例化一个新的HtmlHelper来实现这一点:

//Controller
public ActionResult Foo()
{
    var x = ThemedActionLink(/*Parameters*/);
    //save x to database
    return View();
}

//Custom HtmlHelper code
private class EmptyViewDataContainer : IViewDataContainer
{
    public ViewDataDictionary ViewData { get; set; }
}

public static string ThemedActionLink(
    //Parameters
    )
{
    var helper = new HtmlHelper(new ViewContext(), new EmptyViewDataContainer());
    var preTheming = //Generate pre-element wrapper
    var postTheming = //Generate post-element wrapper
    return MvcHtmlString.Create(
        preTheming
        + helper.ActionLink(text, action, controller)
        + postTheming).ToString();
}

但是我在return语句中得到了
NotImplementedException
。如何从控制器的上下文中获得正确初始化的HtmlHelper?

可能更容易利用控制器的
TagBuilder
UrlHelper
属性

var a = new TagBuilder("a");
var url = Url.Action(action, controller);

a.InnerHtml(text);
a.Attributes.Add("href", url);

return MvcHtmlString.Create(preTheming + a.ToString() + postTheming);
我可能也会省略最后一个
ToString()
——它将在某个时候被隐式调用