私は単一ページの Web アプリに取り組んでいます。このページにはドロップダウン リストがあります。アイテムが選択されると、jQuery を使用して、選択された値をアクション メソッドに送信します。アクション メソッドは [現時点では、テスト目的で] その値を ViewBag に追加し、PartialView を返します。明らかに、この部分的なビューを同じページに入れたいと思っています。したがって、ドロップダウンから値を選択すると、選択したオプションがその下に表示されます。これは可能ですか、それとも間違った方法でアプローチしていますか?
コンテキストに関連するコード:
目次(メインページ)
<html>
@using SampleTracking.Models.ViewModels;
@model SamplingEventsVM
<head>
<title>@ViewBag.Title</title>
<script src="~/Scripts/jquery-2.1.1.js"></script>
<script type="text/javascript" src="~/Scripts/CustomScripts.js"></script>
</head>
<body>
<span id="SamplingEventDiv">
@Html.DropDownListFor(model => model.SelectedSamplingEvent, Model.SamplingEvents, new { @id = "SamplingEventSelection" })
</span>
<div id="SampleListDiv">
@{Html.RenderPartial("~/Views/Home/RetrieveSamples.cshtml");}
</div>
</body>
</html>
脚本
$(function (ready) {
$("#SamplingEventSelection").change(
function () {
$.post(
"/Home/RetrieveSamples",
{ selectedSamplingEvent: $("#SamplingEventSelection").val() },
function (data) {
$("#SamplingEventDetails").html(data)
}
)
}
)
});
アクション メソッド スクリプトが投稿中
public ActionResult RetrieveSamples(string samplingEvent)
{
ViewBag.Selected = samplingEvent;
return PartialView();
}
部分図
<div id="SamplingEventDetails" style="margin-top:100px;">@ViewBag.Selected</div>