Для ошибки проверки шоу я использую что-то вроде этого:
MainEmail это свойство от ViewModel
var mod = ModelState.First(c => c.Key == "MainEmail"); // this
mod.Value.Errors.Add("Row's shouldn't duplicates."); // this
if (ModelState.IsValid)
{
return RedirectToAction("Details");
}
return View(client);
В этом поле будет отображаться ошибка:
<div class="editor-label">
@Html.LabelFor(model => model.MainEmail)
</div>
И на будущее вы должны скрыть свой экран ошибок! Вам необходимо отобразить пользовательскую страницу ошибки:
Если вы используете asp-mvc-3, добавьте в web.config такую строку:
<system.web>
<customErrors mode="On" defaultRedirect="~/Error" />
...
И пользователи будут иметь /Shared/Error.cshtml страницу, вставленную в страницу с сообщением об исключении (которое может отображать данные безопасности).
ADD
Об уникальном создании ограничений было сказано здесь
Уникальное ограничение в коде Entity Framework First
, чем вы можете проверить дублирование записей с помощью своего кода попытки.
В моем приложении я сначала использую код и не добавляю уникальные ограничения, потому что это приводит к низкой тестируемости. В этом случае используйте простой Find перед сохранением изменений.
Первый подход немного быстрее.
Второй подход - тестируемость.