私はViewモデルからレンダリングされたいくつかのフィールドを持つRazorビューを持っています。アコーディオンの異なるセクションに同じフィールドを表示する必要があります各セクションのフィールドを複製したい)。私はこれを行うための最善の方法はわかりません - フィールドを部分的なビューに置き、アコーディオンセクションをクリックすると、またはビューを動的にレンダリング/ロードしますか?フィールドを含む、または完全に他の何か?RazorのjQueryアコーディオン:異なるアコーディオンセクションに同じフィールドを表示する
EDIT:
<div id="accordion">
<h3><a href="#" class="acc-section">First header</a></h3>
<div id="div1">
<fieldset>
@Html.LabelFor(model => defaultStudyEvent.GroupName, "Group Name")
@Html.TextBoxFor(model => defaultStudyEvent.TimePoints)
</fieldset>
</div>
<h3><a href="#" class="acc-section">Second header</a></h3>
<div></div>
</div>
レンダリングされたHTML::jsfiddle here
カミソリコードチェック
<div id="accordion">
<h3><a href="#" class="acc-section">First header</a></h3>
<div id="div1">
<fieldset id="f1">
<label for="defaultStudyEvent_GroupName">Group Name</label>
<input id="defaultStudyEvent_TimePoints" name="defaultStudyEvent.TimePoints" type="text" value="" />
</fieldset>
</div>
<h3><a href="#" class="acc-section">Second header</a></h3>
<div>(Move fieldset above to here when "Second header" is clicked)</div>
</div>
を、私は、以下のようにさまざまなオプションでプレーしてきたが、私はありませんこれが正しいアプローチであるかどうかを確認してください:
$(document).ready(function() {
$('#accordion').accordion();
$('.acc-section').click(appendFields);
});
function appendFields() {
$('#accordion')
.append($('#div1'))
.accordion('destroy')
.accordion();
}
私はここで何を達成したいのかは十分にはわかりませんが、2つ(またはそれ以上)のペインで同じ内容のアコーディオンを作成する場合は、ビューのフィールドをミラーリングするだけではなくヘルパーや何か、あなたがコード混乱の多くを避けたい場合)、JavaScriptを使用してコンテンツを移動させるのではなく、ミラーリングされたコンテンツの動的な読み込みを望む背後にある理由は何ですか? –
こんにちはAnders、私は、各ペインで同じ部分ビューを使用すると、フィールドが2回表示され、同じID値を持つ2セットのフィールドが作成されると考えています。また、コードを複製するので、私はコンテンツを動かすことによって賢明にしようとしていたと思います。あなたが「フィールドを鏡にする」と言ったら、どういう意味ですか?私はあなたの提案のいくつかを聞くことに感謝しています...歓声 –