VEU.WathBody/3-app/1-lib/Kit.Helpers/Extension/System.Web.Mvc.cs

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))
});
}
}
}