私のシンペルテストモデル:
public class MovieModel {
public string SelectedCategorieID { get; set; }
public List<CategorieModel> Categories { get; set; }
public MovieModel() {
this.SelectedCategorieID = "0";
this.Categories = new List<CategorieModel>() {new CategorieModel {ID = 1,
Name = "Drama"},
new CategorieModel {ID = 2,
Name = "Scifi"}};
}
}
public class CategorieModel {
public int ID { get; set; }
public string Name { get; set; }
}
My Home Controllerアクションインデックス:
public ActionResult Index() {
Models.MovieModel mm = new Models.MovieModel();
return View(mm);
}
私の強くタイプされたビュー:
@model MvcDropDownList.Models.MovieModel
@{
ViewBag.Title = "Home Page";
}
<script type="text/javascript">
function categoryChosen(selectedCatID) {
// debugger;
var url = "Home/CategoryChosen?SelectedCategorieID=" + selectedCatID;
$.post(url, function (data) {
$("#minicart").html(data);
});
}
</script>
@using (Html.BeginForm("CategoryChosen", "Home", FormMethod.Get)) {
<fieldset>
Movie Type
@Html.DropDownListFor(m => m.SelectedCategorieID, new SelectList(Model.Categories, "ID", "Name", Model.SelectedCategorieID), "---Select categorie---")
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
}
<input type="button" value="Minicart test" onclick="categoryChosen('@Model.SelectedCategorieID');" />
<div id="minicart">
@Html.Partial("Information")
</div>
'Minicart test'が付いた2番目の入力を使用しているため、最初の入力は無視してください(HTML.Beginformは、後で何かを学ぶためにあります)。ミニカートのものは別のチュートリアルからのものです、お詫び申し上げます。気を散らさないでください。
ボタンがクリックされると、categoryChosen jQueryが呼び出され、アクションが呼び出されます。
[AcceptVerbs("POST")]
public ActionResult CategoryChosen(string SelectedCategorieID) {
ViewBag.messageString = SelectedCategorieID;
return PartialView("Information");
}
部分ビュー情報は次のようになります。
@{
ViewBag.Title = "Information";
}
<h2>Information</h2>
<h2>You selected: @ViewBag.messageString</h2>
私の質問は、ドロップダウンリストの値を変更した後でも、Model.SelectCategorieIDがゼロ(Model.SelectCategorieID = 0)である理由です。私は何が間違っているのですか?よろしくお願いします。ご不明な点がございましたら、お気軽にお問い合わせください。