针对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;
            }
        });

    });
那里有调试警报。单击下拉菜单中的文本时,会触发此警报,但是如果您输入整个单词并单击“提交”,则不会触发。 我首先要验证客户端地理文本框中的文本,以确保它是集合中包含的值,而不是将文本框显示为红色,以进行交流。 谢谢。     

解决方法

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