Проверка на стороне клиента по объекту в ASP.Net-MVC3?

У меня есть форма HTML5 с действием, определенным следующим образом:

@using (Html.BeginForm("SearchAction", "ResultsController"))

Форма состоит из двух текстовых полей:

<input type="text" name="txtSearchTerm" id="txtSearchTerm" class="frontPageInput" placeholder="Begin your search..." required />          
<input type="text" name="txtGeoLocation" id="txtGeoLocation"  class="frontPageInput" required />          

Поле txtGeoLocation — это поле автозаполнения, которое загружается из кэшированного объекта, передается через контроллер и класс репозитория модели с помощью следующего кода jQuery:

<script type="text/javascript" language="javascript">
    $(function () {
        $("#txtGeoLocation").autocomplete(txtGeoLocation, {
            source: function (request, response) {
                $.ajax({
                    url: "/home/FindLocations", type: "POST",
                    dataType: "json",
                    selectFirst: true,
                    autoFill: true,
                    mustMatch: true,
                    data: { searchText: request.term, maxResults: 10 },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item.GeoDisplay, value: item.GeoDisplay, id: item.GeoID }
                        }))
                    }
                })
            },
            select: function (event, ui) {
                alert(ui.item ? ("You picked '" + ui.item.label + "' with an ID of " + ui.item.id)
                    : "Nothing selected, input was " + this.value);
                document.getElementById("hidLocation").value = ui.item.id;
            }
        });

    });

Там есть предупреждение для отладки. При нажатии на выпадающий текст срабатывает это оповещение, однако оно не срабатывает, если вы введете слово целиком и нажмете «Отправить».

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

Спасибо.


person ElHaix    schedule 09.06.2011    source источник


Ответы (1)


Вы можете использовать удаленную проверку jquery, используя атрибут [Remote()], чтобы проверить, что значение находится в списке. Вам нужно будет выполнить ту же проверку на стороне сервера, когда вы отправляете обратно.

person Adam Tuliper - MSFT    schedule 09.06.2011