2016-08-10 3 views
0

나는 C# asp.net mvc 4를 사용하고 있습니다. 나는 test.cshtml에서 보내고 표시 할 사전을 만들고 있습니다. 저는 C#에 익숙하고 캐스팅에 문제가 있습니다. cshtml 페이지의 객체 값 사전.C# 사전 문자열 개체 키로 값을 얻으십시오

여기 내 개체 클래스이고 나는 viewbag 사용하여 보내

Dictionary<string, User> dic = new Dictionary<string, User>(); 
dic.Add("1", new User { ID_Task = "task1", Agent = "shasapo" }); 
dic.Add("2", new User { ID_Task = "task2", Agent = "fania" }); 
dic.Add("3", new User { ID_Task = "task3", Agent = "andre" }); 
ViewBag.taskDetailVehicle = dic; 

을 여기에 내가 값 얼마나 test.cshtml 내 첫 번째 시도이다 :

@if (ViewBag.taskDetailVehicle.ContainsKey("3")) 
    { 
     User test1 = ViewBag.taskDetailVehicle.Where(z => z.Value.ID_Task == "3").FirstOrDefault().Value; 
     User test2 = ViewBag.taskDetailVehicle.Values.FirstOrDefault(k => k.ID_Task == "3"); 
    } 

을하지만이 코드는 나를주고있다 오류 : "먼저 대리자 또는 식 트리 형식으로 캐스팅하지 않고도 람다 식을 동적으로 디스패치 된 연산의 인수로 사용할 수 없습니다."

도움 저, 키에 의해 값을 얻을 수있는 방법이하십시오 ..

@if (ViewBag.taskDetailVehicle.ContainsKey("3")) 
    { 
     User test1 = ViewBag.taskDetailVehicle["3"]; 
     <p>test1.ID_Task <br/> test1.Agent </p> 
    } 

그러나 반환 널 (null)입니다 :

그때 나는 다른 방법을 시도?

+0

'사용자 TEST1 = ((사전 <문자열, 사용자>) ViewBag.taskDetailVehicle) 어디에요 (.... ' –

답변

1

ViewBagdynamic 개체이므로 컴파일 타임에 특정 형식이 없습니다. 당신은 사전에 동적 객체를 캐스팅해야합니다 그리고

var dictionary = ViewBag.taskDetailVehicle as Dictionary<string, User>; 

:

@if (ViewBag.taskDetailVehicle.ContainsKey("3")) 
{ 
    User test1 = dictionary["3"]; 
} 
+0

감사합니다. – Shasapo

관련 문제