コード ビハインドにこのプロパティがあります。
public string LocationOptions
{
get { return Session["LocationOptions"].ToString(); }
set { Session["LocationOptions"] = value; }
}
フロントエンドには、この JavaScript があります。
<script type="text/javascript">
function pageLoad(sender, args) {
InitLocationsAutoComplete();
}
</script>
<asp:UpdatePanel ID="upScript" runat="server">
<ContentTemplate>
<script type="text/javascript">
function InitLocationsAutoComplete() {
var locationsJson = '<%= LocationOptions %>';
alert(locationsJson);
}
</script>
</ContentTemplate>
</asp:UpdatePanel>
C# コードでゲッターとセッターにブレークポイントを設定しています。
私は MVP を使用しており、セッターはプレゼンターから呼び出されます。
最初のページの読み込みでは、期待どおりに動作します。セッターのブレークポイントが最初にヒットします。次に、ゲッターのブレークポイント。最後に、期待する値を含む JavaScript アラートを受け取ります。
他の更新パネルによってトリガーされる部分的なポストバックで問題が発生しています。それらでは、セッターブレークポイントが新しい値でヒットします。ゲッター ブレークポイントが次にヒットし、すばやく見るSession["LocationOptions"]
とそこに新しい値が表示されます。しかし、JavaScript アラートを受け取ると、最初のページ読み込みからの初期値が引き続きアラートされます。
それでもC#でプロパティを呼び出す場合、更新された値がjavascriptに届かない理由がわかりません。最初のページ読み込みからの初期値に固執するのはなぜですか?