我有以下PageViewModel类:
public class PageViewModel : ViewModel<Page>
{
public PageViewModel ()
{
Kywords = new List<Keyword>();
AnswserKeywordDictionary = new Dictionary<string, Answer>();
}
public Company Company { get; set; }
public List<Keyword> Kywords { get; set; }
public Dictionary<string, Answer> AnswserKeywordDictionary { get; set; }
}
在我看来,我是这样使用属性AnswserKeywordDictionary的:
@Html.DisplayAffirmativeAnswer(Model.AnswserKeywordDictionary["myKey"])
我的问题是:如果字典中没有"myKey“,我如何返回默认值。
提前感谢
发布于 2014-09-19 13:29:28
检查它是否存在,如果不存在,返回一个默认值:
Model.AnswserKeywordDictionary.ContainsKey("myKey")
? Model.AnswserKeywordDictionary["myKey"]
: "default"
您还可以为此创建一个扩展方法:
public static Dictionary<K, V> GetValueOrDefault<K, V>(this Dictionary<K, V> dictionary, K key, V defaultValue)
{
V val;
if (dictionary.TryGetValue(key, out val))
{
return val ?? defaultValue;
}
return defaultValue;
}
像这样使用它:
Model.AnswserKeywordDictionary.GetValueOrDefault("myKey", "default")
发布于 2014-09-19 13:31:06
用一种方法抽象你的字典:
public Dictionary<string, Answer> AnswserKeywordDictionary { get; set; }
public GetAnswer(string key, Answer defaultValue)
{
if(AnswserKeywordDictionary.ContainsKey(key)
return AnswserKeywordDictionary[key];
return defaultValue;
}
然后在视图中使用该方法:
@Html.DisplayAffirmativeAnswer(Model.GetAnswer("myKey"))
https://stackoverflow.com/questions/25935113
复制相似问题