2011-10-03 69 views
0

鑑於以下代碼,我如何在我的視圖中選擇列表項以通過ID獲取名稱?我只想通過映射到列表id範圍的本地@id變量從列表中獲取名稱值。如何傳入SelectList並使用關聯選擇從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

我將使用jQuery與您的下拉列表的onChange 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); 
} 

Remeber使用AllowGet如果你不這樣做你從一個AJAX調用Post(如在我的例子)

UPDATE反映意見

要實現您需要使用通過ViewBag傳遞的字典。

然後從您的視圖中訪問(Dictionary)ViewBag.MyDictionary。 或你喜歡的任何集合。

+0

我應該更清楚。我只需要剝離關聯的[id] = [name]值,並且我認爲一個列表可以簡單地通過,就像字典/集合那樣具有關聯0(1)訪問權限。我需要做的就是獲取id並在列表,selectlist或collection/Hash中查找它,但實際上並不確定如何去做。它確實與dropdownlists沒有任何關係。 – JaJ

+0

如果這一次正確理解,我將使用通過ViewBag傳遞的字典。然後從您的視圖中訪問(Dictionary )ViewBag.MyDictionary。或者你喜歡的任何集合。 – Iridio

+0

是的,這工作得很好:db.TypesIds.ToDictionary(x => x.Id,x => x.Name);謝謝! – JaJ

相關問題