このASP.NET MVC 2 HTMLヘルパーをどのようにリファクタリングしますか?
-
29-09-2019 - |
質問
簡単な質問。
このASP.NET MVC 2 HTMLHELPERをどのようにリファクタリングしますか?具体的には、このシナリオでTagBuilderクラスを使用することは理にかなっていますか?
public static MvcHtmlString BusinessDisplayContacts(this HtmlHelper helper, string phone, string cellPhone,
string fax, string website, string email, bool hideEmail)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("<ul>");
if (!string.IsNullOrEmpty(phone)) {
sb.AppendLine("<li class=\"tel\">");
sb.AppendLine("<span class=\"type\">Work</span>:");
sb.AppendFormat("<span class=\"value\">{0}</span>",phone);
sb.AppendLine("</li>");
}
if (!string.IsNullOrEmpty(cellPhone)) {
sb.AppendLine("<li class=\"tel\">");
sb.AppendLine("<span class=\"type\">Cell</span> Phone:");
sb.AppendFormat("<span class=\"value\">{0}</span>",cellPhone);
sb.AppendLine("</li>");
}
if (!string.IsNullOrEmpty(fax)) {
sb.AppendLine("<li class=\"tel\">");
sb.AppendLine("<span class=\"type\">Fax</span>:");
sb.AppendFormat("<span class=\"value\">{0}</span>",fax);
sb.AppendLine("</li>");
}
if (!string.IsNullOrEmpty(website)) {
sb.AppendFormat("<li><a class=\"url\" href=\"{0}\">{0}</a></li>",website);
}
if (!hideEmail && !string.IsNullOrEmpty(email)) {
sb.AppendFormat("<li><a class=\"email\" href=\"mailto:{0}\">{0}</a></li>",email);
}
sb.AppendLine("</ul>");
if (sb.Length < 10)
{
return MvcHtmlString.Create("");
}
else {
return MvcHtmlString.Create(sb.ToString());
}
}
前もって感謝します。
アップデート:
建設的なコメントのすべてをありがとう。最終的に、 @Queen3の提案に従って、上記のコードを強くタイプされた部分ビューに移動することにしました。
解決
私が人々がよく見逃しているのを見て、そのようなもののためにC#逐語的な文字列を使用することです...例えば
sb.AppendLine("<li class=\"tel\">");
sb.AppendLine("<span class=\"type\">Work</span>:");
sb.AppendLine(string.Format("<span class=\"value\">{0}</span>",phone));
sb.AppendLine("</li>");
に作ることができます
sb.AppendFormat(@"
<li class=""tel"">
<span class=""type"">Work</span>: <span class=""value"">{0}</span>
</li>
", phone);
これはより読みやすいです。
別のこと:私はそれらすべての文字列 +ブールをオブジェクトの中に入れます。 ContactInfo
または何か、あなたのヘルパーの署名を変更する BusinessDisplayContacts(this HtmlHelper helper, ContactInfo info)
- このようにして、既存のコードを壊すことなく、電話番号と条件を追加/削除/変更できます。
所属していません StackOverflow