Мне просто нужно было сделать что-то похожее только для проверки на стороне сервера (например, проверить содержимое файла), и в итоге мы полностью узурпировали @ Html.ValidationSummary вместе с довольно приятной небольшой работой.
Мыу нас есть класс BaseController, расширяющий Controller, и внутри мы переопределяем метод OnActionExecuting для нескольких целей.Мы создаем новый список в ViewBag для наших сообщений об ошибках и гарантируем, что перед выполнением любого действия оно инициализируется.Затем мы можем добавить к нему наши ошибки и отобразить их на экране.
Для целей этого вопроса это будет выглядеть так:
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (ViewBag.ErrorsList == null)
{
ViewBag.ErrorsList = new List<string>();
}
}
}
Затем в нашем _Layout.cshtmlдобавьте следующее к вашему @RenderBody ()
@if(ViewBag.ErrorsList.Count > 0)
{
<div class="container margin-top-10 alert alert-danger">
<h3><i class="glyphicon glyphicon-warning-sign"></i></h3><br/>
@foreach (string error in @ViewBag.ErrorsList)
{
@error <br/>
}
</div>
@RenderBody()
}
Теперь, когда возникает ошибка на стороне сервера, которую мы хотим отобразить как сообщение об ошибке проверки, мы просто добавляем ее в наш ViewBag.ErrorsList
ViewBag.ErrorsList.Add("Something bad happened...");
И вуаля, один пользовательский контейнер для сообщений об ошибках проверки на стороне сервера с любыми нужными стилями, с ошибками, передаваемыми так же, как ValidationSummary.