asp.net-mvc - 在 ASP.NET MVC 中检查 Razor 中的字典键

标签 asp.net-mvc dictionary

我正在开发一个我继承的 ASP.NET MVC 应用程序。该应用程序使用 Dictionary<string, string>对于 Translations 。那Dictionary存储在 Application目的。目前,我有以下内容:

@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);
}

此方法有效,除非 key未在 Translations 中找到。我怎样才能优雅地确保 key 存在于 Translations 中我的 Razor 代码中的字典?我似乎无法找到一个好的方法来做到这一点。

感谢您的帮助,祝您节日快乐。

最佳答案

您只需检查该键是否存在于字典中即可。

@{
   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);
}

我不喜欢在 View 中进行任何计算,但这应该可行。如果键不存在,将返回空字符串。

关于asp.net-mvc - 在 ASP.NET MVC 中检查 Razor 中的字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623066/

相关文章:

java - 如何使用Java streams和reduce()获取Map的key和value的计算总和?

javascript - 查找差值大于或等于给定数字的对数

.net - 在现有数据库中创建 ASP.Net 成员(member)数据库结构

asp.net-mvc - 传递 IEnumerable 变量以在 ASP .NET MVC 中查看

c# - 尝试为文件 <FILE> 附加自动命名的数据库失败。存在同名数据库

c# - 如何创建用于将大文件上传到 ASP.NET MVC 的 WCF Rest 端点

python - 将列表字典转换为字典列表

python - 访问嵌套字典 panda 中的单元格的最佳方式是什么?

python - 如何使用字典键值对设置类实例属性 "pythonic"ly?

c# - 将特殊字符转换为普通字符