我的简单测试模型:
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; }
}
我的家控制器动作索引:
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”的第二个输入(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)?我究竟做错了什么?非常感谢您提前回答。如果您需要任何信息或任何不清楚的地方,请告诉我。