jqueryuiダイアログ内にレンダリングされるASP.NETMVC3.0部分ビューがあります。この部分的なビューの中には、さらに情報を表示するのに役立つリンクがあります。
@foreach (StatusType status in ViewBag.Status)
{
<li>@status.StatusMessage<a href='#' status='@status.StatusCode'><img src=@Url.Content("~/Content/Images/information.png") alt="See detail"/></a></li>
}
これらのリンクをクリックイベントにバインドしました。
$('a[status]').live('click', function (e) {
if (e.preventDefault)
e.preventDefault();
else
e.returnValue = false;
var status = $(this).attr('status');
alert('@Model.Code');
...});
何が起こっているのかというと、リンクを最初にクリックすると、正しいコード(たとえば12)が表示されます。別のコード(66)の部分ビューを再度ロードすると、2つのアラートメッセージが表示されます。最初のメッセージには12(前にクリックした古い値)が表示され、2番目のメッセージには66が表示されます。
ビューを部分的にロードするほど、アラートに含まれる値が多くなります。クリックしたすべてのコードの履歴のようになっている理由がわかりません。
誰かがこの問題について何か考えを持っているなら、それは歓迎されるでしょう、それはただ私を怒らせます。
前もって感謝します。
更新しました
ライブ作品の代わりにonを使用していますが、ダイアログに問題があります。提案されたソリューションでコードを変更しました:
$('#StatusDiv').on('click', 'a[status]', function (e) {
e.preventDefault();
var status = $(this).attr('status');
alert('@Model.Code');
$('#StatusDialog').dialog({
autoOpen: false,
width: 800,
resizable: true,
title: 'Status Info',
modal: true,
open: function (event, ui) {
alert('@Model.Code');
$(this).load('@Url.Action("ViewStatusInfo")', { clientId: clientId, Code: '@Model.Code', status: status
});
}
});
$('#StatusDialog').dialog('open');
});
最初のアラートは正しいコードを表示しますが、open関数内の2番目のアラートは古いコードを表示します。2回目のクリックでは正しく機能しますが、最初の表示が正しいため、古い値を選択する方法がわかりません...
よろしくお願いします。