针对ASP.Net-MVC3中对象的客户端验证?

时间:2011-06-09 23:05:05

标签: c# asp.net-mvc-3 asp.net-mvc-validation

我有一个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;
            }
        });

    });

有调试警报。当点击下拉的文本时,此警报会触发,但如果您键入整个单词并点击提交,则不会触发。

我想首先验证客户端地理文本框中的文本,以确保它是集合中包含的值,而不是将文本框设置为红色,进行通信。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用[Remote()]属性使用jquery远程验证来验证值是否在列表中。回发后,您还必须在服务器端进行相同的检查。