前回書いた添付ファイルの修正問題については、編集中のコンテンツには別のIDを付与するという方法で対処しています。
つまり、コンテンツのIDは、作成途中のもの、正規に公開されているもの、正規に公開されているものの編集中のもの、の3種類に分けられるわけです。公開コンテンツの編集開始をクリックした場合、公開コンテンツはそのままにして、それの複製が別のIDを与えられて作られ、これが編集中のコンテンツとなります。これにより、編集中のコンテンツをいかにいじろうと、それは公開される内容に反映されません。いろいろな試行錯誤ができます。そして、書き込みボタンを押した時点で、編集中コンテンツの内容が、公開コンテンツと置き換わります。
こういう説明を書いていると、なかなか凝ったプログラムになってしまったものだと、つくづく思います。ですが、これは必要な複雑さですね。ただ単に画像ファイルが付けられるようにするだけで良ければ、もっと安易で簡単なプログラム追加で済むところですが、実際に運用する場合の快適さを考えると、どうしても必要な機能です。自分と、そして将来のMagSite1の利用者が気持ちよく使うための必須機能と思えば、安易な方法で手抜きすることはできませんね。
それはともかく、今日は1つのバグを出して、ASP.NETの動作について1つ勉強しました。
コードの位置をより適切な場所へと移動させている時に、たまたまUnloadイベントのハンドラに移動させてしまいましたが、そこで意図しない動作に陥りました。設定したプロパティが反映されなくなってしまったのです。
その理由は、Unloadイベントでコントロールのプロパティに値を設定しても無効である!ということでした。
こういう問題を肌で体験すると、ASP.NETのアーキテクチャが身に染みて良く分かりますね。Unloadイベントは、おそらく、すべて送信した後に起こるイベントです。だから、何かを設定しても、もはや後の祭りなのでしょう。そこから空想を働かせると、ページ処理の流れが、送信される実体込みでイメージできますね。こうやって、システムの動作を身体に叩き込んで行くのも悪くない感じです。