MattHidinger.comの例を拡張して、MVCサイトにポップアップダイアログを追加しようとしています。
彼のサイトのコードを使用しています...
<script type="text/javascript">
$.ajaxSetup({ cache: false });
$(document).ready(function () {
$(".openDialog").live("click", function (e) {
e.preventDefault();
$("<div></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
title: $(this).attr("data-dialog-title"),
close: function () { $(this).remove() },
modal: true,
width: 700,
height: 350
})
.load(this.href);
});
$(".close").live("click", function (e) {
e.preventDefault();
$(this).closest(".dialog").dialog("close");
});
});
</script>
およびHtml.ActionLink
@Html.ActionLink("Delete via actionlink", "Delete", "CostModel"
, new { id = item.HighlightReportID }
, new { @class = "openDialog", data_dialog_id = "dialog", data_dialog_title =
string.Format("Delete {0}", item.DisplayIdentifier) })
クリックするとUIダイアログを開くアンカータグをレンダリングできます。
<a class="openDialog" data-dialog-id="dialog" data-dialog-title="Delete report for Nov 12" href="/CostModel/Delete/162">Delete via actionlink</a>
だが!
同じ識別構造を使用してページにアンカータグを手動で追加すると、失敗します。
<a class="openDialog" data_dialog_id="dialog" data_dialog_title="Delete report for Nov 12" href="/CostModel/Delete/162">Delete via manual anchor tag</a>
手動で作成されたタグと比較して、MVCで生成されたアンカータグが機能する理由はありますか?
警告。明らかに、MVCのページに手動でタグを追加することはありません。アンカータグ内に画像を生成するImageLinkヘルパーを使用することから始めましたが、失敗しました。最初のプリンシパルに戻って、手動のアプローチを試しましたが、失敗すると非常に混乱しました。
編集1
これがページのコードです。data_dialog_idを同じで異なるものに設定して、同時に両方を個別に追加しようとしたことに注意してください。違いはなく、ActionLinkのみがJQueryによって取得されます。
@Html.ActionLink("Delete via actionlink", "Delete", "CostModel"
, new { id = item.HighlightReportID }
, new { @class = "openDialog", data_dialog_id = "dialog1", data_dialog_title = string.Format("Delete {0}", item.DisplayIdentifier) })
<a class="openDialog"
data_dialog_id="dialog2"
data_dialog_title="@string.Format("Delete {0}", item.DisplayIdentifier)"
href="/CostModel/Delete/@item.HighlightReportID">Delete via manual anchor tag</a>
これらはレンダリングされた2つのタグです
<a class="openDialog" data-dialog-id="dialog1" data-dialog-title="Delete report for Dec 12" href="/CostModel/Delete/212">Delete via actionlink</a>
<a class="openDialog" data_dialog_id="dialog2" data_dialog_title="Delete report for Dec 12" href="/CostModel/Delete/212">Delete via manual anchor tag</a>
私の目で見る限り、それらは同一ですが、最初のもの(dialog1)のみがjqueryによって取得されます。