2014-12-23 2 views
2

내가 상속 한 ASP.NET MVC 앱에서 작업 중입니다. 앱은 TranslationsDictionary<string, string>을 사용합니다. 그 DictionaryApplication 개체에 저장됩니다. 현재, 나는 다음과 같습니다ASP.NET MVC에서 면도기의 사전 키 확인

@foreach (var key in Model.MyDictionary.Keys) 
{ 
    var definition = Model.MyDictionary[key]; 
    ViewDataDictionary viewData = new ViewDataDictionary(); 
    viewData["key"] = key; 
    viewData["value"] = ((Dictionary<string, string>)(HttpContext.Current.Application["Translations"]))[key]; 
    Html.RenderPartial("~/Views/Shared/_Definition.cshtml", definition, viewData); 
} 

이 방법은 keyTranslations에서 발견되지 않는 경우를 제외하고 작동합니다. 내 면도기 코드에서 Translations 사전에 해당 키가 있는지 어떻게 알 수 있습니까? 나는 이것을 할 수있는 좋은 방법을 찾지 못하는 것 같습니다.

도움과 성 축하에 감사드립니다.

답변

1

Dictionary에 키가 있는지 확인할 수 있습니다.

@{ 
    var translations = ((Dictionary<string, string>)(HttpContext.Current.Application["Translations"])); 
} 
@foreach (var key in Model.MyDictionary.Keys) 
{ 
    var definition = Model.MyDictionary[key]; 
    ViewDataDictionary viewData = new ViewDataDictionary(); 
    viewData["key"] = key; 
    viewData["value"] = translations.ContainsKey(key) ? translations[key] : string.Empty; 
    Html.RenderPartial("~/Views/Shared/_Definition.cshtml", definition, viewData); 
} 

보기에서 어떤 계산을하는 것도 재미 있지 않지만 작동해야합니다. 키가 존재하지 않으면 빈 문자열이 리턴됩니다.

+0

좋아요! 감사! –

1

당신은 키가 존재하는지 여부를 나타내는 bool을 반환 DictionaryContainsKey 방법을 사용할 수있는 Dictionary<TKey, TValue> :

@if (Dictionary.ContainsKey("SomeKey") == true) 
{ 
    //"SomeKey" present 
} 
else 
{ 
    //"SomeKey" not present 
} 

Dictionary을 반복하는 방법은 여러 가지가 여기에 각 KeyValuePair을 통해 하나 반복하는이 있습니다 :

@foreach(KeyValuePair<string, string> entry in Model.MyDictionary) 
{ 
    //entry.Key with it's corresponding entry.Value can now be used in your code 
    viewData["key"] = entry.Key; 
    viewData["value"] = //check if Translations.ContainsKey(entry.Key) here 
}