0

ポストバックで完全に動作する私のページ。私の問題は、人々が提出するすべての成分や字幕がちょっと厄介で、ページ全体をリロードすることです. だから、それは ajax を少し学ぶのに良い方法かもしれないと思いました... 私はたくさんの記事を読みましたが、混乱しました。Ajax.Beginform を使用している人もいれば、jQuery のイベント内で jQuery の $.ajax を使用している人もいます (たとえば、submit)。2番目のアプローチの方が優れていると読みましたが、フォームの作成方法でそれが可能かどうかはわかりません.

これが私のビューの重要な部分です。要約すると、サブタイトルのリストがあり、各サブタイトルには成分のリストを含めることができます。フォームの 1 つは成分を送信でき、もう 1 つはサブタイトルを送信できます。最初のものは複数回表示できます (それぞれのサブタイトルで)。

    <div id="Ingredients">
         <h2>Ingrédients</h2>
         @foreach (RecettesMaison.Models.Subtitle sub in Model.Subtitles)
         {
              <h4>@Html.DisplayFor(modelItem => sub.Name)</h4>
              <ul id="ing@nSubtitle">
              @foreach (RecettesMaison.Models.Ingredient ing in sub.Ingredients)
              {
                  <li>@Html.DisplayFor(modelItem => ing.QuantityAndName)</li>
              }
              </ul>
              using (Html.BeginForm("AddIngredient", "Recipe", new { subname = sub.Name }, FormMethod.Post))
              {
                  @Html.HiddenFor(model => model.IDRecipe)
                  <a name="IngredientSection" ></a>
                  <input class="field required span6 text-box single-line" id="nameingredient" name="nameingredient" />
                  <input type="submit" class="btn btn-success" value="Ajouter un ingrédient" />
              }
              nSubtitle++;
         }

         @using (Html.BeginForm("AddSubtitle", "Recipe", FormMethod.Post))
         {
              @Html.HiddenFor(model => model.IDRecipe)
              <a name="SubtitleSection" ></a>
              <input class="field required span6 text-box single-line" name="Name" />
              <input type="submit" class="btn btn-success" value="Ajouter une catégorie d'ingrédient" />
         }
</div>

私の最初のアプローチは、送信が成功した場合、2 つの foreach を新しいデータで「更新」することでした。しかし、must チュートリアルで私が見たアプローチは、部分ビューを使用し、div 内の部分ビューのみを更新することです。しかし、私の場合、私の Html.BeginForm は部分ビュー内にあるため、うまくいかないと思います。また、リストの最後に html を追加することも考えていますが、それは成分に対してのみ機能します。したがって、最善の方法は、それぞれの両方を更新することです

それで、私の一般的な質問

どうやってやるの?:)

ありがとう!

4

1 に答える 1

0

Ajax.BeginForm と .ajax()

どちらも同じことを達成します。Ajax.BeginFormJavaScript の詳細を非表示にするため、.ajax()特に MS テクノロジ以外で作業する必要がある場合は、パターンを理解するためのより良い基盤が得られるでしょう。

部分ビューを含む AJAX

それは完全に可能であり、ここSOでもWeb上に多くの例があります。一般的な考え方は、div を AJAX 経由で取得した部分的なビュー コンテンツに置き換えるだけです。

  • div が静的である場合、jquery セレクターは非常に単純です。
  • div が動的に生成される場合は、DOM トラバースを行ってターゲット div を見つける必要があります。

あなたの試みを見なければ、あなたに具体的な助けを与えることは困難です. 単一の部分的なビューとフォームを含む単純な例から始めて、AJAX を使用して更新することをお勧めします。その後、仕組みを理解したら、複数のフォームを持つより複雑な状況に移行できます。

于 2013-05-13T23:49:35.920 に答える