ここで Ajax のヘルプを探しています...
非常に複雑なViewModelに基づいて構築された非常に複雑なビューがあります。
このページには 3 つの列があり、各列は完全な旅を表し、それを分割して個々のフライトを表示します。
各フライトは、詳細 (開始場所と終了場所、出発時間、到着時間、オペレーターなど) を含むボックスで表されます。ボックスには、この場所から利用できる他のすべてのフライトのドロップダウン リストも含まれています (たとえば、ハングしたい場合があります)。空港周辺でさらに 6 時間かかるので、後のフライトを選択できます!)
とにかく、可能なフライトを 1 つ変更することで、列全体を更新する必要があります。後のフライトに乗ると、その後のフライトができなくなる可能性があるためです。
これが私の質問につながります-複雑なビューモデルをjQuery経由でコントローラーに戻すことは可能ですか? foreach ループ内にネストされた部分ビューを使用して実行できますか? 私がやりたいのは、ajax経由で列を更新することだけですが、ビューモデルを戻す方法がわかりません。ページ全体のリロードを避けるようにしています
プロセスの短縮コードを次に示します。
ビューのコード (index.cshtml) - jQuery はメイン ビュー内にあります。
@foreach (var item in Model)
{
<div id="column-@groupCount">
@Html.Partial("_JourneyColumnPartial", item)
</div>
}
<script type="text/javascript">
$(".flightItem").change(function (event) {
alert(event.target.id);
var cSelected = $(this).val();
alert(cSelected);
$.ajax({
url: "/Search/GetChangeInfo",
contentType: "application/json",
type: "POST",
dataType: "json",
data: ({ cID: cSelected }),
success: function (display) {
}
});
});
</script>
最初の部分ビューのコード (_JourneyColumnPartial.cshtml)
<div class="routeContainer">
@Html.Partial("_ColumnItemPartial", Model)
</div>
子部分ビューのコード (_ColumnItemPartial.cshtml)
@{
int journeyNumber = 1;
}
@foreach (var journey in Model.SelectedJourneys)
{
List<JourneyDetails> list = Model.Journeys.Where(j => j.JourneyDateAndTimeID != journey && j.DepartureID == hub.DepartureID && j.ArrivalID == hub.ArrivalID).OrderBy(j => j.JourneyDateAndTime).ToList();
<div class="box">
<div class="journeytimes">
<b>Depart</b> @hub.DepartureDate<br />
<b>Arrive</b> @hub.ArrivalDate<br />
</div>
<div class="boxcontrols">
<select class="flightItem" id="flightItem_@{<text>@Model.ColumnNumber</text><text>_</text><text>@journeyNumber</text>}">
@foreach (var flight in list)
{
<option value="@flight.JourneyID">@flight.ProviderName - @flight.JourneyDateAndTime</option>
}
</select>
</div>
<!-- end of box -->
</div>
journeyNumber++;
<!-- end of box wrap -->
}
ViewModel に関する詳細を含めていないことは承知していますが、非常に複雑で、他のクラスの一般的なリストが含まれているため、非常に大きくなります。ajax/jQueryのトリガーはドロップダウンリストの変更イベントです。
これがまったく意味をなさない場合は、遠慮なく言ってください。私が探しているものを明確にしようとします!
ありがとう