开发者

MVC update Dropdownlistfor with jquery

I have a Dropdownlistfor connected to my model. When the page is loaded the model is empty, but I have a 开发者_运维知识库button on the page that updates the model. My problem is that my dropdownlist doesn't update.

Markup:

@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:")

Script:

btnChangeRace.click(function () {
    url = "/TimeMerger/GetTimers/?raceId=" + ddlRaces.val();
    $.get(url);
});

Codebehind:

[HttpGet]
public ActionResult GetTimers(int raceId)
{
    var timeMergeModel = new TimeMergerModel();
    timeMergeModel.Timers = TimerModel.GetTimers(raceId);
    return View(timeMergeModel);
}


$.get(url);

Here you are sending an AJAX request but you are doing nothing in the success callback so nothing will update. There is not even a success callback. So you need to define a success callback:

$.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.
});

Also your DropDownListFor definition is wrong. You are using the same model variable as first and second argument (Model.Timers). The first first argument of this helper should be a scalar property to which you are binding and not a list. It should be:

@Html.DropDownListFor(
    m => m.SelectedTimerValue, 
    new SelectList(Model.Timers, "TimerId", "StartTime"), 
    "Velg timer:"
)

where SelectedTimerValue would be a property on your view model that will hold the selected value. Also why you are using DropDownList instead of DropDownListFor for the first drop down? The whole idea of a view model is that it will contain all the necessary information so that the view would simply display it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜