ASP.NET MVC3 Проверка на стороне клиента - PullRequest
1 голос
/ 28 апреля 2011

Я создаю форму поиска для своего веб-приложения, используя MVC3.Моя форма в основном разделена на две части.1-й раздел имеет 3 критерия поиска.Имя, фамилия и почтовый индекс. Под этим разделом есть кнопка «Поиск», которую я могу нажать, и она должна выполнить проверку на стороне клиента и выдать мне сообщение об ошибке, если какое-либо из полей будет пустым.

2-й раздел на той же странице имеет только одно текстовое поле - для поиска по «Цитатному номеру».Таким образом, в этом разделе есть одно текстовое поле для ввода номера цитаты, а под ним есть еще одна кнопка под названием «Поиск».Когда я нажимаю на эту кнопку поиска, она должна только подтвердить, что поле «Номер цитаты» не пустое.

У меня есть модель представления, которая имеет все 4 свойства (FName, LName, Zip, Quote Number), и я связываю это на странице.Обе кнопки будут отправлять обратно страницу (я знаю, что есть способ определить, какая кнопка была нажата при обратной передаче).Проблема, с которой я сталкиваюсь, заключается в обратной передаче, все отправляет обратно, и если я использую примечания данных для проверки RequiredField, она выполняет проверку всех 4 полей, но я должен проверить, для какой кнопки нажата кнопка, и на основании этой только проверки огня в любом из 3 полейили только на 1 полях.Как мне достичь этой функциональности?Надеюсь, я четко объяснил проблему.

Спасибо

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Поскольку это MVC, не думайте об этом как о постбеках, думайте о них как о подчиненных. Поскольку они ищут по разным критериям, они должны быть двумя разными формами, подчиняющимися двум разным действиям. Поскольку они являются отдельными действиями, у каждого может быть свое собственное представление с его собственной ViewModel и проверкой. Затем, чтобы объединить их в одну физическую страницу для представления пользователю, просто используйте частичный рендеринг, чтобы поместить их обоих в одно и то же представление.

В основном представление, которое вы представляете пользователю, будет выглядеть примерно так:

@{
    Html.RenderAction("SearchByName");
}
<!-- maybe some markup to visually separate them -->
@{
    Html.RenderAction("SearchByQuote");
}

Также дает вам дополнительное преимущество, заключающееся в том, что каждое действие отвечает за одну задачу, и вам не нужно вводить код, чтобы определить, какая кнопка была нажата и т. Д.


И на тот случай, если вы подумаете про себя: "Эй, так как оба являются поиском, просто с разным количеством параметров, я не могу перегрузить действие Search?" нет Нет .

0 голосов
/ 29 апреля 2011

Кевин,

Измените страницу, чтобы у вас было две разные формы, по одной для каждого типа поиска. Когда вы нажимаете кнопку отправить в одной форме, проверяются только дочерние поля этой формы.

Затем, как предложил R0MANARMY, выполните два отдельных действия, по одному для каждой формы поиска.

counsellorben

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...