UR.ANUS
Asp.net mvc framework
вернуться

Магдануров Гайдар Ильдарович

Шрифт:

private static string MONTH_PREFIX = "month_";

private static string YEAR_PREFIX = "year_";

private static string ListItemToOption(SelectListItem item)

{

TagBuilder builder = new TagBuilder("option")

{

InnerHtml = HttpUtility.HtmlEncode(item.Text)

};

if (item.value != null)

builder.Attributes["value"] = item.Value;

if (item.Selected)

builder.Attributes["selected"] = "selected";

return builder.ToString(TagRenderMode.Normal);

}

private static string SelectList(string id,

List<SelectListItem> items)

{

StringBuilder listItemBuilder = new StringBuilder;

foreach (var item in items)

{

listItemBuilder.AppendLine(ListItemToOption(item));

}

TagBuilder tagBuilder = new TagBuilder("select")

{

InnerHtml = listItemBuilder.ToString

};

tagBuilder.Attributes.Add("id", id);

tagBuilder.Attributes.Add("name", id);

return tagBuilder.ToString(TagRenderMode.Normal);

}

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)

{

// buffer

StringBuilder sb = new StringBuilder;

// generate days

List<SelectListItem> days = new List<SelectListItem>;

string dayValue = GetValue(html, DAY_PREFIX + id);

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

{

days.Add(new SelectListItem

{

Text = (i == 0) ? String.Empty : i.ToString,

Value = i.ToString,

Selected = (dayValue == i.ToString)

});

}

sb.AppendLine(SelectList(DAY_PREFIX + id, days));

// generate months

List<SelectListItem> months = new List<SelectListItem>;

string monthValue = GetValue(html, MONTH_PREFIX + id);

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

{

months.Add(new SelectListItem

{

Text = (i == 0) ? String.Empty :

DateTimeFormatInfo.CurrentInfo.MonthNames[i — 1],

Value = i.ToString,

Selected = (monthValue == i.ToString)

});

}

sb.AppendLine(SelectList(MONTH_PREFIX + id, months));

// generate years

List<SelectListItem> years = new List<SelectListItem>;

string yearValue = GetValue(html, YEAR_PREFIX + id);

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

{

years.Add(new SelectListItem

{

Text = (i == 1900) ? String.Empty : i.ToString,

Value = i.ToString,

Selected = (yearValue == i.ToString)

});

}

sb.AppendLine(SelectList(YEAR_PREFIX + id, years));

// parent tag

if (!String.IsNullOrEmpty(text))

{

TagBuilder div = new TagBuilder("div");

div.Attributes.Add("id", id);

div.InnerHtml = text + sb.ToString;

sb = new StringBuilder(

div.ToString(TagRenderMode.Normal));

}

return sb.ToString;

}

private static string GetValue(HtmlHelper html, string id)

{

object o = null;

if (html.ViewData != null)

o = html.ViewData.Eval(id);

if (o == null)

o = html.ViewContext.RequestContext.HttpContext.Request.Params[id];

return (o == null) ? String.Empty : o.ToString;

}

}

Использование серверных элементов управления WebForms

В главе 2, в разд. "Использование элементов управления WebForms в MVC-приложениях” уже была продемонстрирована возможность применения серверных элементов управления в представлениях MVC. Как уже было сказано ранее, использование серверных элементов управления может быть оправдано, если не требуется интерактивное взаимодействие с соответствующим элементом, и он используется только для генерации разметки.

  • Читать дальше
  • 1
  • ...
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • ...

UR.ANUS - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • support@anus.bid