現在、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(ViewBag.ModulesのUpModuleモジュール) {{ [li] @ Html.LinkButton(module.Name、module.Value、module.Target、new {@class = "landingButton"}); [/ li] } [/ ul]
明らかに間違ったhtmlタグは別として、私が台無しにしたのは何ですか?
編集 私の質問に表示する正しいマークアップを取得できず、機能しないことを十分に認識しているため、誤ったマークアップが存在することに注意する必要があります。