Конкатенация строк

Самый очевидный способ — сгенерировать разметку конкатенацией строк. Код для этого метода приведен в листинге 5.11.

Листинг 5.11. Реализация метода DatePickerc помощью конкатенации строк

using System.Web.Mvc;

using System.Text;

using System;

using System.Globalization;

public static class DataPickerHelper

{

  public static string DatePicker(this HtmlHelper html, string id)

 {

    return DatePicker(html, id, String.Empty);

  }

  public static string DatePicker(this HtmlHelper html,

                  string id, string text)

  {

    StringBuilder sb = new StringBuilder();

    if (!String.IsNullOrEmpty(text))

    {

      sb.Append("<div id="");

      sb.Append (id);

      sb.Append("">");

      sb.Append(text);

    }

    /* Day */

    sb.Append("<select id="day_");

    sb.Append(id);

    sb.Append("">");

    sb.Append("<option></option>") ;

    for (int i = 1; i <= 31; i++)

    {

      sb.Append("<option>");

      sb.Append(i.ToString());

      sb.Append("</option>");

      sb.Append("</select>");

      sb.Append("&nbsp;");

    }

    /* Month */

    sb.Append("<select id="month_");

    sb.Append(id);

    sb.Append("">");

    sb.Append("<option></option>");

    for (int i = 0; i <= 11; i++)

    {

      sb.Append("<option>");

      sb.Append(DateTimeFormatInfo.CurrentInfo.MonthNames[i]);

      sb.Append("</option>");

    }

    sb.Append("</select>");

    sb.Append("&nbsp;");

    /* Year */

    sb.Append("<select id="year_");

    sb.Append(id);

    sb.Append("">");

    sb.Append("<option></option>");

    for (int i = 1900; i <= DateTime.Now.Year; i++)

    {

      sb.Append("<option>");

      sb.Append(i.ToString());

      sb.Append("</option>");

    }

    sb.Append("</select>");

    if (!String.IsNullOrEmpty(text))

    {

      sb.Append("</div>");

    }

    return sb.ToString();

  }

}

Плюс решения, продемонстрированного в листинге 5.11, — простота реализации "в лоб", копированием кода из макета верстки. Минусы решения очевидны — поддержка такого кода сложна за счет необходимости работы с кодом, перемешанным с большим количеством строковых констант.

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК