Как передать SelectList и использовать ассоциативный выбор, чтобы получить имя из id? - PullRequest
0 голосов
/ 03 октября 2011

Учитывая следующий код, как я могу выбрать элемент списка в моем представлении, чтобы получить имя через идентификатор? Я просто хочу получить значение имени из списка через локальную переменную @id, которая отображается в диапазон идентификаторов списков.

Это действительно не имеет никакого отношения к выпадающим спискам ... возможно, selectlist - это неправильный контейнер для словарей ассоциативного поиска?

- Контроллер

ViewBag.TypeId = new SelectList(db.TypeIds, "TypeId", "Name");

- Просмотр

@* ??? Get the name by a local @id  *@
<div>ViewBag.TypeId.SelectItemNameById(@id)</div>  @* Bad psuedo code here... *@ 

1 Ответ

1 голос
/ 03 октября 2011

Я буду использовать Jquery с вызовом ajax в onChange вашего выпадающего списка.

$(document).ready(function () {
  $("#MyDrop").change(function () { GetValue("#MyDrop"); });
});

function GetValue(objSource) {
var url = '/Home/Index/GetValue/';
$.getJSON(url, { id: $(objSource).val() }, function (data) {       
      //with data returned fill your fields
    });
});

}

с контроллера

public ActionResult GetValue(string id)
{
  int intId = 0;
  int.TryParse(id, out intId);
  var myData = //Get the value from Id
  return Json(myData, JsonRequestBehavior.AllowGet);
}

Помните, что нужно использовать AllowGet, если вы не делаете Post вызов с вашего ajax (как в моем примере)

ОБНОВЛЕНИЕ, чтобы отразить комментарии

Чтобы достичь того, что вам нужно, используйте словарь, передаваемый через ViewBag.

Затем, по вашему мнению, вы получаете доступ к (словарю) ViewBag.MyDictionary. Или любую коллекцию, которую вы предпочитаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...