ポストバックで完全に動作する私のページ。私の問題は、人々が提出するすべての成分や字幕がちょっと厄介で、ページ全体をリロードすることです. だから、それは 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 を追加することも考えていますが、それは成分に対してのみ機能します。したがって、最善の方法は、それぞれの両方を更新することです
それで、私の一般的な質問
どうやってやるの?:)
ありがとう!