好的,一切都在“功能上”与我试图完成的工作一起工作,我再次确信这是愚蠢的,但我无法弄清楚如何做这件事。
我有一个实体的编辑表单,比如说一辆车。这辆“汽车”可以有 0 - 许多乘客。所以在我的编辑表单上,我有汽车的所有字段,然后是显示每位乘客(部分)的列表视图。我还有一个“添加新乘客”按钮,它将呈现一个新的局部视图,允许您输入乘客。这有一个取消链接和一个添加按钮来提交一个 Ajax 表单。添加乘客时,乘客会自动添加到列表中,但我需要输入乘客表单才能离开。我曾尝试使用 onSuccess 和 onComplete 函数来隐藏表单所在的 div,但两者都只呈现部分视图 HTML 元素(白屏、文本),而不是整个页面上下文中的部分视图。
来源: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 %>