15

Я хочу, а также проверку на стороне клиента как проверку на стороне сервера. Я понял, что это как следующее:Asp.Net MVC EnableClientValidation не работает

Model: (Модель имеет DataModel (DBML), который содержит класс Test)

namespace MyProject.TestProject 
{ 
    [MetadataType(typeof(TestMetaData))] 
    public partial class Test 
    { 

    } 

    public class TestMetaData 
    { 
     [Required(ErrorMessage="Please enter a name.")] 
     [StringLength(50)] 
     public string Name { get; set; } 
    } 
} 

Контроллер нет ничего особенного.

The View:

<% Html.EnableClientValidation(); %> 
<% using (Ajax.BeginForm("Index", "Test", FormMethod.Post, 
      new AjaxOptions {}, new { enctype = "multipart/form-data" })) 
    {%> 
    <%= Html.AntiForgeryToken()%> 
    <fieldset> 
     <legend>Widget Omschrijving</legend> 
     <div> 
      <%= Html.LabelFor(Model => Model.Name) %> 
      <%= Html.TextBoxFor(Model => Model.Name) %> 
      <%= Html.ValidationMessageFor(Model => Model.Name) %> 
     </div> 
    </fieldset> 
    <div> 
     <input type="submit" value="Save" /> 
    </div> 
<% } %> 

Чтобы сделать эту всю работу я добавил также ссылки на JS файлы:

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 

В конце концов, он должен работать, но он не работает на 100%: Это делает проверяется без обновления страницы после нажатия кнопки. Он также выполняет «половину» проверки на стороне клиента. Только когда вы введете текст в текстовое поле и затем отмените введенный текст. Появится проверка на стороне клиента. Но когда я пытаюсь это сделать, постукивая между элементами управления, нет проверки на стороне клиента.

Могу я пропустить какую-то ссылку или что-то еще? (Я использую Asp.Net MVC 2 RTM)

ответ

5

Измените порядок нагруженном JavaScript ...

<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 

Если бы точно такая же проблема, и это очищается его для меня ...

+0

[Здесь] (http://pastebin.com/685bHTHH) заключается в том, как проверка включена в мою страницу. Тем не менее, проверка клиента не работает вообще, вы видите какие-либо проблемы? – Shimmy

1

Я думал, что тоже чего-то не хватает, но я знаю, что подключаемый модуль проверки jQuery не реагирует на mouseEnter/mouseLeave. Согласно документации для этой вилки в (на plug in page - найдите раздел с надписью «Несколько вещей, чтобы искать, когда играть с демы»):

Перед поля помечаются как недействительные, закрепление ленив: Перед отправкой формы в первый раз, на вкладке пользователь может через поля без получения раздражающих сообщений - он не получит жучки, прежде чем он имел возможность фактически ввести правильное значение

Я предполагаю, что это это же правило с проверкой на стороне клиента MVC 2. Я не могу быть уверен в этом, потому что в документации ничего не говорится, но «это работает на моей машине» :).

Я пошел с маршрутом проверки jQuery, который поддерживается в MVC Futures (обратите внимание, что документации для этого нет). Для того, чтобы использовать его, вам просто нужно заменить тег сценария для MicrosoftAjax.js, MicrosoftMvcAjax.js и MicrosoftMvcValidation.js файлов с этими двумя тегами:

<script src="/js/jquery.validate.js" type="text/javascript"></script> 
<script src="/js/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script> 

замена пути с вашим.

Я также нашел необходимость обновить до последней версии jquery.validate.js со страницы разработчика, потому что здесь мы используем более позднюю версию jQuery (1.4).

Надеюсь, что это поможет.

+0

Я изменил свой код на то, что вы описали, но никаких улучшений. Я использую: JQuery 1.4.2 JQuery-проверки 1.7 MicrosoftMvcJQueryValidation нет VersionNumber Availabe. Я также изменил ссылку внутри файла .js MicrosoftMvcJQueryValidation на /// , но все же никаких улучшений. – Colin

1

гм ..., это поздно, чтобы ответить, но попробовать это:

<script src="<%= Url.Content("ScriptFile.js") %>" type="text/javascript"></script>