我目前正在将我的 aspx mvc 视图迁移到 razor 引擎,但是当涉及到我的助手时,我遇到了一些麻烦。
我不确定为什么,但是当我尝试在其 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(ViewBag.Modules 中的 UpModule 模块) { [li]@Html.LinkButton(module.Name, module.Value, module.Target, new {@class = "landingButton"});[/li] } [/ul]
除了明显错误的 html 标签之外,我搞砸了什么?
编辑 我应该注意到存在不正确的标记,因为我无法在我的问题中显示正确的标记,并且我完全知道它不会起作用。