1
두 개의 부분 뷰가있는 뷰를 사용합니다.ModelState가 유효하지 않은 경우 ASP.NET MVC AJAX가 UpdateTargetId를 변경합니다.
<div id="matches">
<% foreach (var item in Model)
{ %>
<% Html.RenderPartial("RenderMatchesListRowUserControl", item); %>
<% } %>
</div>
<div id="addMatchFormBox">
<% Html.RenderPartial("AddNewMatchUserControl");%>
</div>
제 1 부분도 "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가 무효가 될 때까지 제대로 작동합니다. 이 경우 양식은 일치 목록이 포함 된 div 요소를 참조하기 때문에 updatetargetid가 일치 목록의 끝에 렌더링됩니다. 이를 방지하려면 양식을 포함하는 div 요소를 참조하도록 updatetargetid를 변경해야합니다. 그러나 나는 이것을 어떻게하는지 모른다.
문제를 어떻게 해결했는지 알려 주시면 감사하겠습니다. –