我有一个Dropdownlistfor连接到我的模型。加载页面时模型为空,但我在页面上有一个更新模型的按钮。我的问题是我的下拉列表没有更新。
标记:
@Html.DropDownList("ddlRaces", new SelectList(ViewBag.Races, "RaceId", "Name"))
<input type="button" id="btnChangeRace" class="btnGo" value=" " />
@Html.DropDownListFor(m => m.Timers, new SelectList(Model.Timers, "TimerId", "StartTime"), "Velg timer:")
脚本:
btnChangeRace.click(function () {
url = "/TimeMerger/GetTimers/?raceId=" + ddlRaces.val();
$.get(url);
});
代码隐藏:
[HttpGet]
public ActionResult GetTimers(int raceId)
{
var timeMergeModel = new TimeMergerModel();
timeMergeModel.Timers = TimerModel.GetTimers(raceId);
return View(timeMergeModel);
}
答案 0 :(得分:0)
$.get(url);
这里你发送的是一个AJAX请求,但你在成功回调中什么也没做,所以什么都不会更新。甚至没有成功的回调。所以你需要定义一个成功的回调:
$.get(url, function(result) {
// result here will represent the value returned by the server
// which in your case is HTML. So here you might need to update
// the relevant portion of your page.
});
您的DropDownListFor
定义也是错误的。您使用相同的模型变量作为第一个和第二个参数(Model.Timers)。此助手的第一个第一个参数应该是您要绑定的标量属性,而不是列表。它应该是:
@Html.DropDownListFor(
m => m.SelectedTimerValue,
new SelectList(Model.Timers, "TimerId", "StartTime"),
"Velg timer:"
)
其中SelectedTimerValue
将是您的视图模型上将保存所选值的属性。另外,为什么您在第一次下拉时使用DropDownList
而不是DropDownListFor
?视图模型的整体思想是它将包含所有必要的信息,以便视图只显示它。