2015-08-16 3 views
1

Я использую JQuery, чтобы заполнить выпадающий список в ASP.NET MVCзначение DropDownList и текст

$(function() { 
    $.getJSON('/GetFoo', function (result) { 
     var ddl = $('#foo'); 
     ddl.empty(); 
     $(result).each(function() { 
      $(document.createElement('option')) 
       .attr('value', this.Id) 
       .text(this.Text) 
       .appendTo(ddl); 
     }); 
    }); 
}); 

Вот действие контроллера, которые возвращают JSON используется в этом процессе:

public ActionResult GetFoo() 
{ 
    ViewBag.IdTable = new SelectList(db.Table, "IdTable", "Description"); 
     return Json(ViewBag.IdTable, JsonRequestBehavior.AllowGet); 
} 

И вот как мой выпадающий список входит в мой взгляд:

@Html.DropDownListFor(model => model.IdTable,Enumerable.Empty<SelectListItem>(), "-- Loading Values --", new { id = "foo" }) 

для уточнения более, что я делаю, я хочу, чтобы показать D escription в опциях списка выбора вместо IdTable.

Все работает нормально, пока я не подтвержу выбор выпадающего списка. На самом деле, это дает следующее сообщение об ошибке:

The value [Choice] is not valid for IdTable.

Так что я предполагаю, что значения выбранных опций списка устанавливается в поле Описания, а не поле Id.

Как это исправить?

ответ

1

Попробуйте это:

public ActionResult GetFoo() 
{ 
    return Json(db.Table.Select(x=> new { Id = x.IdTable, Text = x.Description}), 
     JsonRequestBehavior.AllowGet); 
} 

Или в вашем изменении JS

.attr('value', this.Id) 

в

.attr('value', this.Value) 
+0

Это решается мой вопрос. Спасибо огромное! – Ayoub