Как добавить сообщение об ошибке в ModelState на MVC с помощью Javascript?

Это свойство моей модели

 public ModelStateDictionary modelSateClientSide { get; set; }

Теперь я вызвал свойство в JavaScript и добавил ошибку в свой ModelState.

if (parseInt(academicAchievement, 10) > parseInt(peAcademicAchievement, 10))
{
    @Model.modelSateClientSide.AddModelError(string.Empty, "xxx");
    return false;
}

Я делаю это правильно? И я получил ошибку в строке выше:

Наилучшее соответствие перегруженного метода для System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult) имеет некоторые недопустимые аргументы.

Как это решить? Есть ли другой вариант добавить сообщение об ошибке в ModelState на MVC с использованием Javascript?


person Community    schedule 13.07.2013    source источник


Ответы (1)


Что ж, я не думаю, что вы можете писать в словарь ModelState с помощью JavaScript, потому что это клиентский язык, а C # / Razor обрабатываются на стороне сервера.

В коде, который вы разместили, строка

@Model.modelSateClientSide.AddModelError(string.Empty, "xxx");

На самом деле будет оцениваться каждый раз при загрузке страницы, потому что она обрабатывается на сервере, а Razor не «знает» о JavaScript или его условных операторах.

Однако если вы просто хотите отобразить сообщение об ошибке, похожее на то, что ValidationSummary HtmlHelper генерирует по умолчанию, вы можете написать для этого функцию JavaScript. Что-то более или менее похожее на это:

function showClientError(message) {
   var $div = $('.validation-summary-errors');
   if ($div.length == 0) {
       $div = $('<div class="validation-summary-errors">');
       $div.html('<ul></ul>');
       // Put the $div somewhere
       $div.appendTo($('#myForm'));
   }
   $div.find('ul').append($('<li>').text(message));
}
person Meryovi    schedule 20.07.2013