これにはいくつかのJavascript/JQueryが必要です...以下はスケッチのみですが、一般的なアプローチとして役立つことを願っています。
独自のコンテナを削除対象にすることができるボタンをレンダリングしたいとします。これを行うには、次のようなマークアップを使用します。
<div class="item-container">
<input type="button" onclick="removeItem(this)" />
</div>
そして、Javascript removeItem
:
<script>
function removeItem(element) {
// get the parent element with class "item-container" and remove it from the DOM
$(element).find(".item-container").remove();
}
</script>
Ajaxで部分ビューを使用するか、ストレートJavascriptを使用することができます。どちらが最適かは、新しいアイテムを作成するためにサーバーへのラウンドトリップが必要かどうかによって異なります。新しいIDなどを生成するためにサーバーに移動する必要があるとします。
まず、部分ビューと対応するコントローラーアクションを作成します。これには、上記の削除ボタンと、テキストボックスおよび追加ボタンが含まれている必要があります。
次に、メインページにAjaxフォームを作成します。このフォームは、[追加]をクリックすると呼び出されます。
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
@using (Ajax.BeginForm("New", new AjaxOptions() { UpdateTargetId="ajaxTarget", HttpMethod = "GET" })) {
<input type='submit' value='Add New' />
}
<div id="ajaxTarget"></div>
このコードは、(現在のコントローラーのアクションNewから)部分ビューをフェッチし、結果をajaxTarget
要素に追加します。
注Ajaxフォームには控えめなAjaxが必要です。これは、NugetからインストールできますInstall-Package JQuery.Ajax.Unobtrusive
。