Frage

Kurze Frage.

Wie würden Sie dieses Asp.net MVC 2 Htmlhelper Refactoring? Insbesondere wäre es sinnvoll, die TagBuilder Klasse in diesem Szenario zu benutzen?

        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());
        }
    }

Vielen Dank im Voraus.

UPDATE:
Vielen Dank für all die konstruktiven Kommentare. Am Ende habe ich beschlossen, den obigen Code in eine stark typisierte Teilansicht gemäß @ queen3 Vorschlag zu bewegen.

War es hilfreich?

Lösung

Eine Sache, ich sehe die Menschen viel fehlen, wird mit C # wörtlich Strings für Sachen wie die ... z.

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>");

kann in gemacht werden

sb.AppendFormat(@"
<li class=""tel"">
    <span class=""type"">Work</span>: <span class=""value"">{0}</span>
</li>
", phone);

, die Art und Weise besser lesbar ist.

Eine andere Sache: Ich würde All die Saiten + bool innerhalb eines Objekts, wie ContactInfo oder etwas, das signatur Ihrer Helfer BusinessDisplayContacts(this HtmlHelper helper, ContactInfo info) verändert sich - auf diese Weise fügen Sie in der Lage zu / entfernen / ändern Telefonnummern und Bedingungen ohne Bruch vorhandene Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top