2009-04-09 11 views
1

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&uuml;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.

Antwort

-2

OKay. Es gibt keinen Weg, dies auf diese Weise zu erreichen. Ich habe es mit jQuery gelöst.

+0

Darf ich Sie nur daran erinnern, dass wir gerne wissen, wie Sie das Problem gelöst haben? –

Verwandte Themen