2

我有两个下拉列表框更改第一个我想填写第二个。我为此编写了一个 jquery,如下所示

function BindModel() {
var makeCode = $('#ddMake').val();
var ddModel = $("#ddModel");
if (makeCode == "0") {
    return false;
}
else {
    $("#loading").show();
    $.ajax({
        type: "POST",
        url: "Services/GetModels.ashx",
        data: { 'makeCode': makeCode },
        success: function (data) {
            $("#loading").hide();
            $.each(data, function () {
                ddModel.append($("<option />").val(this.ModelCode).text(this.ModelName));
            });
        },
        error: function () {
            $("#loading").hide();
        }
    });
}
}

我有一个通用的http处理程序如下

context.Response.ContentType = "application/json";
        context.Response.ContentEncoding = Encoding.UTF8;
        if( context.Request["makeCode"]!=null)
        {
            var makeCode = context.Request["makeCode"].Trim();
            var lobjSearchProps = new CSearchAllProps
            {
                SearchValue = "%",
                MakeCode = makeCode
            };
            var allModelProps = new 
            CModelRestrictionLogic().GetModels(lobjSearchProps).ToList();
            context.Response.Write(JSONHelper.GetJSON(allModelProps));    
        }

CModelRestrictionLogic().GetModels(lobjSearchProps)我从数据库中获取数据的函数在哪里。
并将CModelRestrictionLogic().GetModels(lobjSearchProps)列表转换为 JSON。每件事都运行良好。但是每当我发回它时都会出错:

无效的回发或回调参数。使用配置或页面中的 <%@ Page EnableEventValidation="true" %> 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

我知道原因,因为我已经从 jquery 填写了下拉列表,所以它出现了错误。
我还在 init 上编写了函数来填充回发值中的数据,如下所示

 protected override void OnInit(EventArgs e)
    {
        var postedOptionValue = Request.Form[ddModel.UniqueID];
        ddModel.Items.Add(new ListItem(postedOptionValue));
        base.OnInit(e);
    }

我怎样才能摆脱这个价值?我不想使用 enableEventValidation="false" 因为这是一个安全问题。

4

0 回答 0