2009-04-09 9 views
1

2つの部分ビューがあるビューを使用します。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> 

最初の部分図「RenderMatchesListRowUserControlは」(試合のリストについては)簡単なdiv要素をレンダリングし、二番目の「AddNewMatchUserControlは、」リストの下に新しいマッチを作成するフォームをレンダリング:

ソースAddNewMatchUserControlの:

にModelStateに応じ
<%= 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> 
<% } %> 

、コントローラは、モデルエラーを表示するために、新しい一致エントリまたはフォームのための部分的なビューのための部分的なビューを返します。

if (Request.IsAjaxRequest()) { 
      return ModelState.IsValid ? PartialView("RenderMatchesListRowUserControl", match) : PartialView("AddNewMatchUserControl"); 
     } 

ModelStateが無効になるまでうまくいきます。この場合、フォームはupdatetargetidがマッチリストを含むdiv要素を参照するため、一致リストの最後に表示されます。これを避けるには、フォームを含むdiv要素を参照するようにupdatetargetidを変更する必要があります。しかし、私はこれを行う方法がわかりません。

答えて

-2

OKay。このようにこれを達成する方法はありません。 jQueryで解決しました。

+0

問題をどのように解決したかを理解していただければ幸いです。 –

関連する問題