У меня есть объект Location, и я использую сетку пользовательского интерфейса Kendu с режимом редактирования InLine. Сущность владеет свойством DisplayName, которое является обязательным и не должно существовать дважды в базе данных.
На данный момент работает отображение сообщения Required Validation:
И он также работает для создания метода CustomValidateModel, вызываемого в методе LocationController Ajax InLine Create, который проверяет, существует ли имя в базе данных, и затем добавляет МодельОшибка. Затем я ловлю эту ошибку в .Events(events => events.Error("onError")) через javascript и затем показываю сообщение через всплывающее окно javascript.
ModelState.AddModelError("DisplayName", "Name already exists.");
И вот в чем суть: Я не хочу, чтобы это всплывающее сообщение javascript. Я хочу также иметь эту информацию под полем, например «Поле обязательно!» сообщение. Я искал много времени, но большинство людей предлагают только эту проверку и вывод через javascript, поскольку он работает в данный момент.
Кроме того, фактическая проблема, помимо всплывающего окна, заключается в том, что запись, которую пользователь хочет создать в сетке, затем исчезает после подтверждения всплывающего окна 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);
}
}
Я надеюсь, что есть возможность заставить это работать таким же образом. Было бы хорошо, если бы была конгруэнтная визуализация и повышение удобства использования.