【发布时间】:2009-04-09 13:47:05
【问题描述】:
我使用一个内部有两个局部视图的视图。
<div id="matches">
<% foreach (var item in Model)
{ %>
<% Html.RenderPartial("RenderMatchesListRowUserControl", item); %>
<% } %>
</div>
<div id="addMatchFormBox">
<% Html.RenderPartial("AddNewMatchUserControl");%>
</div>
第一个部分视图“RenderMatchesListRowUserControl”呈现一个简单的 div 元素(用于匹配列表),第二个“AddNewMatchUserControl”呈现一个表单以在列表下方创建一个新匹配:
AddNewMatchUserControl 的来源:
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Ajax.BeginForm("Create", new AjaxOptions
{
UpdateTargetId = "matches",
InsertionMode = InsertionMode.InsertAfter,
OnSuccess = "flashit",
OnFailure = "renderForm"
}))
{%>
<fieldset>
<legend>New Match</legend>
<p>
<label for="DurationBetweenMovesInDays">
Dauer (in Tagen) zwischen den Zügen:</label>
<%= Html.TextBox("DurationBetweenMovesInDays")%>
<%= Html.ValidationMessage("DurationBetweenMovesInDays", "*")%>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
根据 ModelState,控制器返回新匹配条目的局部视图或表单的局部视图,以显示模型错误。
if (Request.IsAjaxRequest()) {
return ModelState.IsValid ? PartialView("RenderMatchesListRowUserControl", match) : PartialView("AddNewMatchUserControl");
}
它工作正常,直到 ModelState 变得无效。在这种情况下,表单将呈现在匹配列表的末尾,因为 updatetargetid 引用了包含匹配列表的 div 元素。为避免这种情况,必须更改 updatetargetid 以引用包含表单的 div 元素。但我不知道该怎么做。
【问题讨论】:
标签: asp.net asp.net-mvc