using Microsoft.AspNetCore.Mvc.Rendering;
namespace Kit.Helpers
{
public static class SystemWebMvcExtensions
{
///
/// Преобразует перечень объектов в перечень элементов html-списка
///
/// Тип преобразуемого объекта
/// Перечень преобразуемых объектов
/// Функция, возвращающая значение, используемое в качестве Value для элемента списка.
/// Для преобразования возвращаемого значения в строку вызывается стантартная реализация ToString()
/// Функция, возвращающая значение, используемое в качестве Text для элемента списка.
/// Для преобразования возвращаемого значения в строку вызывается стантартная реализация ToString()
public static IEnumerable ToSelectList(
this IEnumerable items,
Func valueSelector,
Func textSelector)
{
if (valueSelector == null) throw new ArgumentNullException("valueSelector");
if (textSelector == null) throw new ArgumentNullException("textSelector");
return items.Select(i => new SelectListItem
{
Value = valueSelector(i).ToString(),
Text = textSelector(i).ToString()
});
}
///
/// Преобразует перечень объектов в перечень элементов html-списка
///
/// Тип преобразуемого объекта
/// Перечень преобразуемых объектов
/// Функция, возвращающая значение, используемое в качестве Value для элемента списка.
/// Функция, возвращающая значение, используемое в качестве Text для элемента списка.
public static IEnumerable ToSelectList(
this IEnumerable items,
Func valueSelector,
Func textSelector)
{
if (valueSelector == null) throw new ArgumentNullException("valueSelector");
if (textSelector == null) throw new ArgumentNullException("textSelector");
return items.Select(i => new SelectListItem
{
Value = valueSelector(i),
Text = textSelector(i)
});
}
///
/// Преобразует перечень объектов в перечень элементов html-списка
///
/// Тип преобразуемого объекта
/// Перечень преобразуемых объектов
/// Функция, возвращающая значение, используемое в качестве Value для элемента списка.
/// Функция, возвращающая значение, используемое в качестве Text для элемента списка.
/// Список значений, которые необходимо отметить в результирующем списке как выбранные.
public static IEnumerable ToSelectList(
this IEnumerable items,
Func valueSelector,
Func textSelector,
Func disabled)
{
if (valueSelector == null) throw new ArgumentNullException("valueSelector");
if (textSelector == null) throw new ArgumentNullException("textSelector");
return items.Select(i => new SelectListItem
{
Value = (valueSelector(i) != null ? valueSelector(i).ToString() : string.Empty),
Text = (textSelector(i) != null ? textSelector(i).ToString() : string.Empty),
Selected = disabled(i)
});
}
///
/// Преобразует перечень объектов в перечень элементов html-списка
///
/// Тип преобразуемого объекта
/// Перечень преобразуемых объектов
/// Функция, возвращающая значение, используемое в качестве Value для элемента списка.
/// Функция, возвращающая значение, используемое в качестве Text для элемента списка.
/// Список значений, которые необходимо отметить в результирующем списке как выбранные.
public static IEnumerable ToSelectList(
this IEnumerable items,
Func valueSelector,
Func textSelector,
TValue selectedValue)
{
if (valueSelector == null) throw new ArgumentNullException("valueSelector");
if (textSelector == null) throw new ArgumentNullException("textSelector");
return items.Select(i => new SelectListItem
{
Value = (valueSelector(i) != null ? valueSelector(i).ToString() : string.Empty),
Text = (textSelector(i) != null ? textSelector(i).ToString() : string.Empty),
Selected = (selectedValue != null && selectedValue.Equals(valueSelector(i)))
});
}
///
/// Преобразует перечень объектов в перечень элементов html-списка
///
/// Тип преобразуемого объекта
/// Перечень преобразуемых объектов
/// Функция, возвращающая значение, используемое в качестве Value для элемента списка.
/// Функция, возвращающая значение, используемое в качестве Text для элемента списка.
/// Список значений, которые необходимо отметить в результирующем списке как выбранные.
public static IEnumerable ToSelectList(
this IEnumerable items,
Func valueSelector,
Func textSelector,
IEnumerable selectedValues)
{
if (valueSelector == null) throw new ArgumentNullException("valueSelector");
if (textSelector == null) throw new ArgumentNullException("textSelector");
return items.Select(i => new SelectListItem
{
Value = (valueSelector(i) != null ? valueSelector(i).ToString() : string.Empty),
Text = (textSelector(i) != null ? textSelector(i).ToString() : string.Empty),
Selected = selectedValues != null && selectedValues.Contains(valueSelector(i))
});
}
}
}