Ich verwende eine Ansicht mit zwei Teilansichten innen.ASP.NET MVC AJAX ändern UpdateTargetId, wenn ModelState ungültig ist
<div id="matches">
<% foreach (var item in Model)
{ %>
<% Html.RenderPartial("RenderMatchesListRowUserControl", item); %>
<% } %>
</div>
<div id="addMatchFormBox">
<% Html.RenderPartial("AddNewMatchUserControl");%>
</div>
Die erste Teilansicht „RenderMatchesListRowUserControl“ macht ein einfaches div-Element (eine Liste der Spiele), die zweite „AddNewMatchUserControl“ eine Form macht ein neues Spiel unter der Liste zu erstellen:
Quelle von 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>
<% } %>
auf dem Model Je kehrt der Regler die Teilansicht für den neuen Angleichungseintrag oder die Teilansicht für das Formular, um die Modellfehler angezeigt werden soll.
if (Request.IsAjaxRequest()) {
return ModelState.IsValid ? PartialView("RenderMatchesListRowUserControl", match) : PartialView("AddNewMatchUserControl");
}
Es funktioniert gut, bis der ModelState ungültig wird. In diesem Fall wird das Formular am Ende der Übereinstimmungsliste gerendert, da sich die Aktualisierungszielkennung auf das div-Element bezieht, das die Übereinstimmungsliste enthält. Um dies zu vermeiden, muss die update targettid geändert werden, um das div-Element zu referenzieren, das das Formular enthält. Aber ich habe keine Ahnung, wie ich das machen soll.
Darf ich Sie nur daran erinnern, dass wir gerne wissen, wie Sie das Problem gelöst haben? –