何時間も費やしても、これを理解することはできません。動的に作成された単純なページ (コントローラーを使用して読み込まれる vbhtml) があり、2 つのテキスト ボックスがあります。
ページに保存ボタンがあります。このボタンは、ページ内 Javascript 関数を呼び出します。関数には、次の行があります。
function saveData()
{
var lDescr = $('#FundNote').val(); // FundNote is the id of a textbox
var DocUrl = $('#DocUrl').val(); // DocUrl is the id of another textbox
alert(lDescr);
alert(DocUrl);
//ajax call to a controller
}
問題は、このページが表示されるたびに、これらの変数が最初に入力した値と同じ値を返し続けることです。ブラウザーのキャッシュを消去すると、新しく入力した値が返されますが、ブラウザーのキャッシュが再度消去されるまで同じ値が返され続けます。このページが表示されるたびに、テキスト ボックスは空でユーザーが値を入力するため、ページ自体が値を保持していません。
ポインタはありますか?
アップデート
数日かけて、こうやって直しました(仮)。
コントローラーが更新された html を送信していて、ブラウザーに問題なく表示されているように見えます (html には、さまざまな値が動的に入力されるドロップダウン ボックスが含まれています。値は常に異なりますが、javascript では古い値が返されます (たとえば、選択オプションの古い値、その値は現在の html のレンダリングにさえ含まれていませんでした。なぜこれが起こっているのかまだわかりません。ソリューションには他の同様のページがあり、それらは正常に動作します。)
とにかく、私がしたことは(今のところ動作させるために)、このhtmlを(コントローラーとvbhtmlファイルを介して)動的に作成するクラスにRandonNo()プロパティを追加しました。次に、vbhtml で、この乱数をすべての html コンポーネント ID に追加しました。また、このように同じ番号を javascriptSave()
関数に渡しましたOnClick="Save('@Model.RandonNo')
。Save メソッドで、次に を変更しまし$('#idOption') to $('#idOption-'+ randomno)
た。IDが毎回違うのでうまくいっているようです。