作为ViewData从字典传递数据
本文关键字:数据 字典 ViewData 作为 | 更新日期: 2023-09-27 18:15:36
我已经在控制器中定义并初始化了一个字典:
Dictionary<string,int> injuryValues = new Dictionary<string,int>();
int i = 1;
foreach (var tmpRec in allRecords)
{
if (!injuryValues.ContainsKey(tmpRec.INJURY))
{
injuryValues.Add(tmpRec.INJURY, ++i);
}
}
ViewData["InjuryDictionary"] = injuryValues;
我想在我的视图中访问这个字典。我明白,传递此数据的理想方式是通过ViewModel,但对于本实例,我需要在ViewData容器中传递此字典。我怎样才能在视图中访问这个字典呢?
例如,在我的视图中,沿着以下行使用字典:
%>
Dictionary injuryList = ViewData["InjuryDictionary"] as Dictionary<string,int>;
<%
什么是正确的语法,我访问这在视图作为一个视图数据容器?出于我的目的,我不使用视图模型,尽管我知道这是一个理想的选择。
原因是您在定义字典时没有填充它的泛型类型。
如前所述,您可以使用var,但为了帮助您更好地理解它,您可以这样做Dictionary<string,int> injuryList = ViewData["InjuryDictionary"] as Dictionary<string, int>;
或
var injuryList = ViewData["InjuryDictionary"] as Dictionary<string, int>;
注意:做了以下测试,因为我看到你上面的评论说它返回错误。然而,我的工作很好。这是我的控制器
public class HomeController : Controller
{
public ActionResult Index()
{
var injuryValues = new Dictionary<string, int>();
injuryValues.Add("test", 1);
injuryValues.Add("test2", 2);
ViewData["InjuryDictionary"] = injuryValues;
return View();
}
}
and my view
<%
Dictionary<string, int> injuryList = ViewData["InjuryDictionary"] as Dictionary<string, int>;
//var injuryList = ViewData["InjuryDictionary"] as Dictionary<string, int>;
%>
<%:injuryList.First().Key%>
<%:injuryList.First().Value%>
你试过用"var"替换"Dictionary"吗?
var injuryList = ViewData["InjuryDictionary"] as Dictionary<string,int>;