助手无法正确渲染

时间:2013-01-21 20:04:37

标签: c# asp.net-mvc-4 razor-2

我目前正在将我的aspx mvc视图迁移到剃须刀引擎,但是当涉及到我的助手时,我遇到了一些头脑问题。

我不确定为什么但是当我尝试在html扩展表单中使用帮助程序时,我的帮助程序是用文本而不是标记来呈现的,我得到的文本不是html。

扩展程序的代码是:

    public static string LinkButton(this HtmlHelper helper, string id, string value, string target, object htmlAttributes)
    {
        var linkButton = new TagBuilder("div");
        var attributes = new RouteValueDictionary(htmlAttributes);

        linkButton.MergeAttribute("id", id);

        //-- apply the button class to the div and any other classes to the button
        linkButton.MergeAttribute("class", attributes.ContainsKey("class") ? string.Format("linkbutton {0}", attributes["class"]) : "linkbutton");

        var content = new TagBuilder("a");
        content.MergeAttribute("href", target);
        content.InnerHtml = value;

        linkButton.InnerHtml = content.ToString();
        return linkButton.ToString();
    }

这是一个非常简单的扩展,其用法如下:

[ul]
    @foreach (UpModule module in ViewBag.Modules)
    {
        [li]@Html.LinkButton(module.Name, module.Value, module.Target, new {@class = "landingButton"});[/li]
    }
[/ul]

除了错误的html标签之外,我搞砸了什么呢?

修改 我应该注意到错误的标记是存在的,因为我无法在我的问题中显示正确的标记,我完全意识到它不起作用。

1 个答案:

答案 0 :(得分:0)

@voroninp将返回类型从字符串切换到MvcHtmlString工作得很好但是,在这种情况下使用声明性帮助器是一个更好的更清晰的选项,虽然为更复杂的帮助器切换返回类型会更好。