Как заполнить модель представления MVC3 выбранным значением из выпадающего списка JavaScript/Knockout?

Проблема с заполнением модели представления в MVC3

Я столкнулся с трудностями при попытке заполнить модель представления, передаваемую в view, после того как список получен и элемент выбран в выпадающем списке.

У меня есть клиентская модель представления для Ajax/Knockout, но это не та модель, которую я пытаюсь заполнить. Возможно, мне нужно сопоставить одну модель с другой, но я не уверен, правильное ли это решение.

В моей форме я использую Knockout и JavaScript для выпадающих списков. Как мне заполнить поле m.VMResidencyWTCS.ScCountyCd в модели представления значением выбранного кода округа? Возможно ли также получить описание? Если да, то как это сделать?

Вот пример кода моего контроллера:

public class InfoController : Controller
{
    [HttpGet]
    public ActionResult GetRegions(string stateCode)
    {
        var regions = _regionRepo.GetAll()
            .Where(r => r.StateCode == stateCode)
            .Select(r => new { 
                Code = r.Code, 
                Name = r.Name
            })
            .ToList();

        return Json(regions, JsonRequestBehavior.AllowGet);
    }
}

Как правильно связать выбор в интерфейсе с моделью на сервере? Буду благодарен за любые советы!

Слушай, а может проще будет использовать двустороннее связывание данных? Добавь в модель представления свойство для выбранного значения, а в разметке привяжи его к выпадающему списку через data-bind. Тогда при выборе значение автоматом обновится в модели. А потом уже можно отправлять на сервер. Меньше кода писать придется. Только не забудь в контроллере обновить модель полученным значением перед возвратом представления.

Для решения этой задачи я бы предложил использовать Knockout.js для связывания данных. Создай observable переменную в вашей view model для хранения выбранного значения. Затем используй data-bind атрибут в HTML для привязки select к этой переменной.

Примерно так:

var viewModel = {
  selectedCounty: ko.observable()
};

viewModel.selectedCounty.subscribe(function(newValue) {
  // Здесь отправляем AJAX-запрос на сервер с новым значением
});

ko.applyBindings(viewModel);

В HTML:

<select data-bind="options: counties, optionsText: 'Name', optionsValue: 'Code', value: selectedCounty"></select>

Это автоматически обновит модель при выборе нового значения.