OK、すべてが私が達成しようとしていることで「機能的に」機能しています。もう一度言いますが、これはばかげていると確信していますが、これを行う方法がわかりません。
エンティティの編集フォームがあります。たとえば、車です。この「車」には 0 ~ 多くの乗客が乗れます。したがって、編集フォームには、車のすべてのフィールドがあり、各乗客 (部分的) を示すリスト ビューがあります。また、乗客を入力できる新しい部分ビューをレンダリングする「新しい乗客を追加」ボタンもあります。これには、キャンセル リンクと、Ajax フォームを送信するための追加ボタンがあります。乗客を追加すると、乗客は自動的にリストに追加されますが、乗客の入力フォームを消す必要があります。onSuccess および onComplete 関数を使用して、フォームが含まれる div を非表示にしようとしましたが、どちらも部分ビュー HTML 要素 (白い画面、テキスト) のみをレンダリングし、ページ全体のコンテキストで partialView をレンダリングしません。
ソース: 1) メイン編集ビュー
<script type="text/javascript">
Function hideForm(){
document.getElementById('newPassenger').style.display = 'none';
}
</script>
<h2>Edit</h2>
<%-- The following line works around an ASP.NET compiler warning --%>
<%= ""%>
<%Html.RenderPartial("EditCar", Model)%>
<h2>Passengers for this car</h2>
<%=Ajax.ActionLink("Add New Passenger", "AddPassenger", New With {.ID = Model.carID}, New AjaxOptions With {.UpdateTargetId = "newPassenger", .InsertionMode = InsertionMode.Replace})%>
<div id="newPassenger"></div>
<div id="passengerList">
<%Html.RenderPartial("passengerList", Model.Passengers)%>
</div>
<div>
<%= Html.ActionLink("Back to List", "Index") %>
</div>
2) 乗客ビューを追加します。以下のキャンセル リンクは、何も返さないアクションであるため、div 内の情報が削除されます。
<% Using Ajax.BeginForm("AddPassengerToCar", New With {.id = ViewData("carID")}, New AjaxOptions With {.OnSuccess = "hideForm()", .UpdateTargetId = "passengerList", .InsertionMode = InsertionMode.Replace})%>
<%=Html.DropDownList("Passengers")%>
<input type="submit" value="Add" />
<%=Ajax.ActionLink("Cancel", "CancelAddControl", _
New AjaxOptions With {.UpdateTargetId = "newPassenger", .InsertionMode = InsertionMode.Replace})%><% end using %>