У меня есть сущность Местоположение, и я использую сетку интерфейса Kendu UI с режимом редактирования InLine. Объект имеет свойство DisplayName, которое требуется, и не должно существовать дважды в базе данных.
В настоящий момент он работает для отображения сообщения Обязательное:
И он также работает над созданием метода CustomValidateModel, вызванного в методе LocationController " → Ajax InLine Create, который проверяет, существует ли Имя уже в базе данных и добавляет a ModelError. Я поймаю эту ошибку, а затем в .Events(events = > events.Error(" onError")) через javascript и покажу затем сообщение через всплывающее окно javascript.
ModelState.AddModelError("DisplayName", "Name already exists.");
И в этом суть проблемы: Я не хочу иметь это всплывающее сообщение javascript. Я хочу также получить эту информацию под полем, например, "Поле обязательное!" сообщение. Я искал много времени, но большинство людей предлагают только эту проверку и выводят через javascript, поскольку она работает в данный момент.
Кроме того, фактическая проблема, кроме всплывающего окна, заключается в том, что запись, которую пользователь хочет создать в Grid, затем исчезает после подтверждения всплывающего окна javascript. Но для удобства использования я хочу, чтобы новая строка и вход сохранялись. Пользователи должны иметь возможность редактировать данное имя, он хотел сохранить. И НЕ должен снова войти в полную строку. Только сообщение "Имя уже существует". должен запрашивать информацию.
Код:
Объект местоположения:
public class LocationDto
{
public Guid? ID { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Field required!")]
public string DisplayName { get; set; }
// other properties
}
LocationController Действие:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateInline([DataSourceRequest] DataSourceRequest request, LocationDto model)
{
CustomValidateModel(model); // checks if the DisplayName is already existing in the DB
if (model != null && ModelState.IsValid)
{
// Create and Save the Model into database
}
return Json(ModelState.ToDataSourceResult());
}
Функция javascript:
function onError(e, status) {
if (e.errors) {
var message = "Error:\n";
$.each(e.errors, function (key, value) {
if (value.errors) {
message += value.errors.join("\n");
}
});
this.cancelChanges();
alert(message);
}
}
Я надеюсь, что есть возможность заставить это работать таким же образом. Это было бы прекрасно в соответствии с конгруэнтной визуализацией и улучшением удобства использования.