私の DropDownListFor は次のようになります。
@Html.DropDownListFor(
m => m.CampaignID,
new SelectList(Model.Campaigns, "ID", "Name"),
"---Geen---",
new {
id = "campaignDdl",
data_url = Url.Action("CampaignChosen", "Nomination")
}
)
私の onchange JavaScript は次のようになります。
$(function () {
$('#campaignDdl').change(function () {
//alert('Template knop geklikt');
var $campaignDdl = $('#campaignDdl');
var selCampID = $campaignDdl.val();
var url = $campaignDdl.data('url');
$.post(url, { selectedCampaignID: selCampID }, function (data) {
$('#campaign').html(data);
})
.fail(function (jqxhr) { alert(JSON.stringify(jqxhr)); });
});
});
私の CampaignChosen アクションは次のようになります。
[AcceptVerbs("POST")]
public ActionResult CampaignChosen(string selectedCampaignID) {
if (!string.IsNullOrEmpty(selectedCampaignID)) {
int campaignID = Convert.ToInt32(selectedCampaignID);
Models.Campaign campaign = Models.Campaign.GetCampaignByID(campaignID);
return PartialView("ShowCampaignOverview", campaign);
} else {
return PartialView("ShowCampaignOverview", null);
}
}
ご覧のとおり、私は部分的なビューを通過しています。JavaScript は、id = "campaign" の div にビューが確実に配置されるようにします。この div は、前に見たドロップダウン リストの下で次のように定義されます。
<div id="campaign"></div>
アイテムが選択されると、すべて正常に動作します。これ以上ないほど幸せです。しかし、ブラウザでリロードを押すと、選択したアイテムはまだドロップダウンリストに表示されていますが、その div に適切な部分ビューを再度ロードする方法がわかりません。私はまだMVCに少し慣れていないからです。
これが通常MVCでどのように行われるかを誰かが指摘できますか? お答えいただきありがとうございます。