これは簡単かもしれませんが、私はSOを検索し、これについていくつかの提案を試しましたが、どれも機能しません。標準のhtmlボタンと他のフィールドを持つdivを持つMVCエディターテンプレートを使用しています。コレクションをテンプレートに渡すと、コレクション内の各アイテムのフィールドが一意のIDでレンダリングされます。次に、いずれかのボタンがクリックされたときにダイアログボックスを開きたいと思います。ボタンは、エディターテンプレート内でそのようにレンダリングされます。
@model ProductViewModel
<span>
<button id="btnSelectTags-@(ViewData.TemplateInfo.HtmlFieldPrefix)" class="sig-button ie-shadowed select-tag" type="button" title="Select tags..." style="margin-right: 10px">Select tags</button>
</span>
// other fields
したがって、2つのオブジェクトを含むコレクションをエディターテンプレートに渡すと、次のhtmlが表示されます。
<button title="Select tags..." class="sig-button ie-shadowed select-tag" id="btnSelectTags-Products[0]" style="margin-right: 10px;" type="button">
// other fields then next item:
<button title="Select tags..." class="sig-button ie-shadowed select-tag" id="btnSelectTags-Products[1]" style="margin-right: 10px;" type="button">
これは問題ないようで、各ボタンに一意のIDを与えます。すべてのdivのアイテムは独自のタグのセットを持つことができるため、一意のID(私は思う)を持っている必要があります。したがって、このjQueryを使用して、ダイアログボックスを開く各ボタンにクリックイベントを追加します(セレクターに他のクラスも含めて、「ボタン」なしで試しました)。
if ($("button.select-tag")) {
$(".select-tag").click(function () {
showTagDialogBox();
});
}
タグがレンダリングされるdivは次のとおりです。
<div style="display: none">
<div id="tagDialogBox" title="Add Tags">
@Html.EditorFor(x => x.ProductViewModels)
</div>
</div>
これがshowTagDialogBox関数です。
function showTagDialogBox() {
$('#tagDialogBox').dialog({
autoOpen: false,
title: "Select Tags",
modal: true,
height: 530,
width: 700,
buttons: {
"Save": function () {
$(this).dialog("close");
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
return false;
}
ただし、いずれかのボタンをクリックしても何も起こりません。Firebugでもjsエラーは発生しません。誰かが私が間違っているかもしれないことを見つけることができますか?これが私がやろうとしていることの写真です: