كيف يمكنك إعادة صياغة هذا المساعد 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