如何传入SelectList并使用关联选择从id获取名称?

时间:2011-10-03 05:17:36

标签: asp.net-mvc-3 razor

鉴于以下代码,如何在视图中选择列表项以通过ID获取名称?我只想通过映射到列表id范围的本地@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 个答案:

答案 0 :(得分:1)

我将在您的下拉列表的onChange上使用Jquery进行ajax调用。

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

如果你没有从你的ajax发出AllowGet电话,请记住使用Post

更新以反映评论

使用通过ViewBag传递的词典来实现您的需要。

然后从您的视图中访问(Dictionary)ViewBag.MyDictionary。 或者你喜欢的任何收藏品。