powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить сообщение валидации на клиенте?
6 сообщений из 6, страница 1 из 1
Как получить сообщение валидации на клиенте?
    #37485723
S_A_V_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Делаю валидацию формы на стороне клиента. Поле модели отмечено двумя атрибутами:
Код: plaintext
1.
2.
3.
[Required]
[RegularExpression(...)]
public string Login { get; set; }

Если на клиенте срабатывает один из валидаторов - поле отмечается как содержащее ошибку и запрос на сервер не отправляется. Но как узнать какое сообщение связано с полем (оно пустое или не сответсвует регулярному выражению)? Есть ли возможность получить сообщения сработавших валидаторов для всех полей формы используя javascript (jQuery) ?

Прбовал так :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function CheckForm(form) {
         ClearErrors(form);

         form.validate({ errorPlacement: function (error, element) {                         
                               SetError(element, error); }
                              }
                            );
        return form.valid();
    }


Но SetError() не вызывается при проверке формы.
Заранее большое спасибо за помощь.
...
Рейтинг: 0 / 0
Как получить сообщение валидации на клиенте?
    #37485776
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас обычная серверная атрибутивная валидация модели, причем тут клиент?
...
Рейтинг: 0 / 0
Как получить сообщение валидации на клиенте?
    #37486437
S_A_V_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть модель со свойством помеченным атрибутами (как приведено выше). Есть поле на форме связанное с этим свойством:
Код: plaintext
1.
@Html.TextBoxFor(m => m.Login, new { @class = "maxWidth" })
На форме есть кнопка:
Код: plaintext
1.
<input type="submit" id="LogIn" value="Вход" class="maxWidth font10" onclick='return $("#logform").valid();' />

Т.е. если форма невалидна - она не отправляется на сервер. При нажатии на кнопку валидация формы происходит и если поле содержит ошибу или пустое , то оно помечается как содержащее ошибку (class = "... input-validation-error"). Далее мне нужно для поля отобразить ошибку во всплывающей подсказке. Вопрос в том как получить сообщения для данного поля?
...
Рейтинг: 0 / 0
Как получить сообщение валидации на клиенте?
    #37486746
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_A_V_eТ.е. если форма невалидна - она не отправляется на сервер.
Дублирование валидации? В чем смысл тогда юзать MVC, где логика (в том числе валидация) должна быть зашита только в модели .
...
Рейтинг: 0 / 0
Как получить сообщение валидации на клиенте?
    #37487078
S_A_V_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не дублирование , а предварительная валидация скриптом. Таким образом сервер не грузится заведомо невалидными запросами. А логика валидации в модели и находится. Ведь когда поле помечается атрибутом (например [Required]) , то происходит не только проверка на сервере , но и подключается скрипт (unobtrusive javascript) который проверяет поле на стороне клиента. Собственно сообщения этой javascript проверки я и хочу получить.
...
Рейтинг: 0 / 0
Как получить сообщение валидации на клиенте?
    #37487135
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_A_V_eЭто не дублирование , а предварительная валидация скриптом.
Это и есть самое дублирование. Описываются рулы валидации на сервере и на клиенте.
S_A_V_eТаким образом сервер не грузится заведомо невалидными запросами.
Я прекрасно осведомлен о плюсах клиентской валидации, зачем Вы мне это говорите?
S_A_V_eА логика валидации в модели и находится.
А причем тут тогда клиент?
S_A_V_eВедь когда поле помечается атрибутом (например [Required]) , то происходит не только проверка на сервере , но и подключается скрипт (unobtrusive javascript) который проверяет поле на стороне клиента. Собственно сообщения этой javascript проверки я и хочу получить.
Ну-ка, отвалидируйте мне на клиенте IDataErrorInfo, слабо?
ProductView
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
public class ProductView: IDataErrorInfo
{
    #region Свойства из БД

    [Display(Name = "Код")]
    public int ProductID { get; set; }

    [Required(ErrorMessage = "\"Название\" - обязательное поле")]
    [Display(Name = "Название")]
    [StringLength(40, ErrorMessage = "Длина значения поля \"Название\" не должна первышать 40")]
    public string ProductName { get; set; }

    [Display(Name = "Код поставщика")]
    public int? SupplierID { get; set; }

    [Display(Name = "Код категории")]
    public int? CategoryID { get; set; }

    [Display(Name = "Измерение")]
    [StringLength(20, ErrorMessage = "Длина значения поля \"Измерение\" не должна первышать 20")]
    public string QuantityPerUnit { get; set; }

    [Display(Name = "Цена за единицу товара")]
    public decimal? UnitPrice { get; set; }

    [Display(Name = "Цена на складе")]
    public short? UnitsInStock { get; set; }

    [Display(Name = "Цена заявленная")]
    public short? UnitsOnOrder { get; set; }

    [Display(Name = "Наценка")]
    public short? ReorderLevel { get; set; }

    [Required(ErrorMessage = "\"Товар отсутствует\" - обязательное поле")]
    [Display(Name = "Товар отсутствует")]
    public bool Discontinued { get; set; }

    #endregion

    #region Расширение

    [Display(Name = "Поставщик")]
    public string CompanyName { get; set; }

    [Display(Name = "Категория")]
    public string CategoryName { get; set; }

    [Display(Name = "Поставщики")]
    public List<Supplier> SupplierList { get; set; }

    [Display(Name = "Категории")]
    public List<Category> CategoryList { get; set; }

    #endregion

    #region Валидация

    public string Error
    {
        get { return null; }
    }

    public string this[string columnName]
    {
        get 
        {
            if (columnName == "ProductID")
            {
                if (this.ProductID == System.DateTime.Now.Year + int.MaxValue)
                {
                    if (this.ProductName.Split('.').Length == 3)
                    {
                        if (this.UnitPrice > 123)
                        {
                            return "Ошибка валидации";
                        }
                    }
                }
            }

            return null;
        }
    }

    #endregion
}


Controller.Create
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(ProductView productToCreate)
{
    if (!ModelState.IsValid)
    {
        return View(productToCreate);
    }

    return Create();
}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить сообщение валидации на клиенте?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]