最初の変更時に 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" は使用したくありません。