2

最初の変更時に 2 つのドロップダウン リスト ボックスがあり、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)データベースからデータを取得する関数はどこにありますか。リストを JSON に変換します
CModelRestrictionLogic().GetModels(lobjSearchProps)すべてがうまくいっています。しかし、私が投稿するたびに、エラーが発生します:

ポストバックまたはコールバック引数が無効です。イベントの検証は、設定で使用するか、ページで <%@ 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