129 lines
8.2 KiB
C#
129 lines
8.2 KiB
C#
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
|
|
namespace Kit.Helpers
|
|
{
|
|
public static class SystemWebMvcExtensions
|
|
{
|
|
/// <summary>
|
|
/// Преобразует перечень объектов в перечень элементов html-списка
|
|
/// </summary>
|
|
/// <typeparam name="T">Тип преобразуемого объекта</typeparam>
|
|
/// <param name="items">Перечень преобразуемых объектов</param>
|
|
/// <param name="valueSelector">Функция, возвращающая значение, используемое в качестве Value для элемента списка.
|
|
/// Для преобразования возвращаемого значения в строку вызывается стантартная реализация ToString()</param>
|
|
/// <param name="textSelector">Функция, возвращающая значение, используемое в качестве Text для элемента списка.
|
|
/// Для преобразования возвращаемого значения в строку вызывается стантартная реализация ToString()</param>
|
|
public static IEnumerable<SelectListItem> ToSelectList<T>(
|
|
this IEnumerable<T> items,
|
|
Func<T, object> valueSelector,
|
|
Func<T, object> 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()
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// Преобразует перечень объектов в перечень элементов html-списка
|
|
/// </summary>
|
|
/// <typeparam name="T">Тип преобразуемого объекта</typeparam>
|
|
/// <param name="items">Перечень преобразуемых объектов</param>
|
|
/// <param name="valueSelector">Функция, возвращающая значение, используемое в качестве Value для элемента списка.</param>
|
|
/// <param name="textSelector">Функция, возвращающая значение, используемое в качестве Text для элемента списка.</param>
|
|
public static IEnumerable<SelectListItem> ToSelectList<T>(
|
|
this IEnumerable<T> items,
|
|
Func<T, string> valueSelector,
|
|
Func<T, string> 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)
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// Преобразует перечень объектов в перечень элементов html-списка
|
|
/// </summary>
|
|
/// <typeparam name="T">Тип преобразуемого объекта</typeparam>
|
|
/// <param name="items">Перечень преобразуемых объектов</param>
|
|
/// <param name="valueSelector">Функция, возвращающая значение, используемое в качестве Value для элемента списка.</param>
|
|
/// <param name="textSelector">Функция, возвращающая значение, используемое в качестве Text для элемента списка.</param>
|
|
/// <param name="selectedValues">Список значений, которые необходимо отметить в результирующем списке как выбранные.</param>
|
|
public static IEnumerable<SelectListItem> ToSelectList<T, TValue, TText>(
|
|
this IEnumerable<T> items,
|
|
Func<T, TValue> valueSelector,
|
|
Func<T, TText> textSelector,
|
|
Func<T, bool> 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)
|
|
});
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Преобразует перечень объектов в перечень элементов html-списка
|
|
/// </summary>
|
|
/// <typeparam name="T">Тип преобразуемого объекта</typeparam>
|
|
/// <param name="items">Перечень преобразуемых объектов</param>
|
|
/// <param name="valueSelector">Функция, возвращающая значение, используемое в качестве Value для элемента списка.</param>
|
|
/// <param name="textSelector">Функция, возвращающая значение, используемое в качестве Text для элемента списка.</param>
|
|
/// <param name="selectedValues">Список значений, которые необходимо отметить в результирующем списке как выбранные.</param>
|
|
public static IEnumerable<SelectListItem> ToSelectList<T, TValue, TText>(
|
|
this IEnumerable<T> items,
|
|
Func<T, TValue> valueSelector,
|
|
Func<T, TText> 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)))
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// Преобразует перечень объектов в перечень элементов html-списка
|
|
/// </summary>
|
|
/// <typeparam name="T">Тип преобразуемого объекта</typeparam>
|
|
/// <param name="items">Перечень преобразуемых объектов</param>
|
|
/// <param name="valueSelector">Функция, возвращающая значение, используемое в качестве Value для элемента списка.</param>
|
|
/// <param name="textSelector">Функция, возвращающая значение, используемое в качестве Text для элемента списка.</param>
|
|
/// <param name="selectedValues">Список значений, которые необходимо отметить в результирующем списке как выбранные.</param>
|
|
public static IEnumerable<SelectListItem> ToSelectList<T, TValue, TText>(
|
|
this IEnumerable<T> items,
|
|
Func<T, TValue> valueSelector,
|
|
Func<T, TText> textSelector,
|
|
IEnumerable<TValue> 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))
|
|
});
|
|
}
|
|
}
|
|
} |