我正在使用@Darin Dimitrov在Loading a partial view in jquery.dialog中解釋的方法,以允許用戶單擊其私人消息之一併在模態框中查看它。我使用ASP.NET MVC3和Razor作爲我的視圖引擎。但我有一些麻煩這個工作...下面是我到目前爲止已經嘗試:在模態框中打開相應的對話
的消息將顯示在表:
<tr id="@item.Id" class="openConversationLink">
<td class="newMessageStatus">@MessageStatus(item)</td>
<td class="msgSenderName">@item.Sender</td>
<td class="msgSubject">@item.Subject</td>
<td class="msgLastUpdated">@item.LastUpdated</td>
<td class="modalItemActions"></td>
</tr>
而同樣的局部視圖裏面,我得到了下面的腳本塊:
<script type="text/javascript">
$(function() {
$("#conversationModal").dialog({
autoOpen: false,
width: 850,
height: 600,
resizable: false,
draggable: false,
modal: true,
open: function (event, ui) {
var convId = ui.attr('id');
alert(convId);
$(this).load('@Url.Action("Conversation", "Message", new { conversationId = convId})');
}
});
$(".openConversationLink").click(function() {
$("#conversationModal").dialog('open');
});
});
</script>
基本上,我不知道是什麼open
處理器內部event
和ui
參數參考。所以對這兩點的一點解釋將不勝感激。但無論如何,即使消息沒有得到現在顯示,我不斷收到這些錯誤:
Compiler Error Message: CS0103: The name "convId" does not exist in the current context. Source: $(this).load('@Url.Action("Conversation", "Message", new { conversationId = convId})');
基本上,我不希望這樣的行被觸發,直到我真正點擊其中一列(開對話對話框),但似乎它實際上在消息頁面打開時被觸發。
UPDATE:
這裏是我的jQuery代碼現在:
$(function() {
$("#conversationModal").dialog({
autoOpen: false,
width: 850,
height: 600,
resizable: false,
draggable: false,
modal: true,
open: function (event, ui) {
var convId = event.target.attr('id');
alert(convId);
$(this).load('Message/Conversation/' + convId);
}
});
$(".openConversationLink").click(function() {
$("#conversationModal").dialog('open');
});
});
凡是可以關於做什麼? :)
是完全合理的。我已經知道了自己(但忘記了更新代碼 - 對此感到遺憾)。但我仍然需要找出一種方法來獲取被點擊的行(tr)的id的值......任何建議? – Kassem 2011-04-25 13:27:04
代碼更新:) – Kassem 2011-04-25 13:30:39
編輯:) – neebz 2011-04-25 13:43:47