Префикс на стороне клиента xVal, вызывающий проблемы с ModelBinder

За последние 24 часа я сильно влюбился в xVal. Я представил его на своем личном веб-сайте, и он работает как чемпион - я не могу поверить, насколько легко это было запустить. Я использую валидаторы ASP.Net MVC, xVal 1.0 и DataAnnotations.

Теперь, пытаясь поместить этот же код в рабочее приложение, я наблюдаю другое поведение. Я достаточно логичен, чтобы знать, что у меня, вероятно, есть что-то другое, но я не могу понять, что это такое.

Чтобы проверка на стороне клиента работала, я добавил в свои поля префиксы «сообщение», например:

<%= Html.TextBox("message.Subject", Model.Subject, new { @class = "contact-input required" })%>

И так далее. Тогда у моего контроллера есть такая логика:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(Message message)
    {
        try
        { // some code here

Теперь, автоматически, ModelBinder заполняет мой объект. Отлично.

Проблема в том, что в моем рабочем проекте я пытаюсь сделать то же самое - проверка на стороне клиента работает отлично, но ModelBinder не заполняет мою модель. Я знаю, что это проблема с префиксом, так как когда я удаляю префикс, все в порядке.

Единственная разница в сценариях заключается в том, что рабочий проект использует минимизированную библиотеку проверки jquery.

Есть идеи, что искать?


person reallyJim    schedule 02.12.2009    source источник


Ответы (2)


Вам не нужны никакие префиксы, чтобы заставить xVal работать, но вам нужны те же имена для ваших входных данных, чтобы ваш ModelBinder работал правильно. Поэтому просто добавьте DataAnnotations к свойствам классов, которые вы собираетесь привязать к представлению, и вызовите помощник xVal html «ClientSideValidation», также вам нужно добавить ссылку на xval, scripts: jquery, jquery.validate, xval. подтвердить ...

person Omu    schedule 02.12.2009
comment
Я с вами в этом вопросе - но для того, чтобы сводка валидации работала, это правильный способ, верно? В соответствии с примером приложения, за которым я следил, будучи новичком в нем. - person reallyJim; 02.12.2009
comment
Хорошо, прошел через это и все вычистил. Теперь работаю без префиксов. В любом случае придется вернуться и посмотреть, в чем их смысл. Спасибо за вклад! - person reallyJim; 03.12.2009
comment
для проверки вам просто нужно добавить еще один свободный метод к помощнику по проверке подлинности клиентов, например, .UseValidationSummary, также не забудьте поместить HTML.ValidationSummary где-нибудь в вашем представлении - person Omu; 03.12.2009
comment
Да, это на месте. Спасибо за помощь! - person reallyJim; 05.12.2009

[AcceptVerbs(HttpVerbs.Post)] public ActionResult Index([Bind(Prefix = "Message")]Message message)

с xval нет дела, это что-то про asp.net mvc ModelBinder

надеюсь, это будет полезно!

мой английский - пул (:

person Desperado    schedule 03.11.2010