我正在研究一个ASP.NET MVC3应用程序,我想从视图调用控制器并将该信息存储为字典。在字典中存储Html.Action调用的结果? (ASP.NET MVC 3)
控制器代码:
public Dictionary<string,int> foo()
{
Dictionary<string,int> bar = new Dictionary<string,int>();
bar.Add("test",100);
return bar;
}
查看代码:
@{ Dictionary<string,int> foobar = Html.Action("foo"); }
...
<div>@foobar["test"]</div>
我可以,如果我使用var foobar = Html.Action("foo");
的观点来打工,但那时它只是说,foobar的是类型System.Web.Mvc.MvcHtmlString
,所以我不能用它做很多。
是否有任何内置的功能,我错过了,或者我应该使用像这样的JSON结果?
编辑:附加信息
还应该注意的是,在VS2010调试器,它可以正确识别foobar的为{System.Collections.Generic.Dictionary'2[System.String,System.Int32]}
,所以问题是,foobar的不正确解析。抛出的错误是:
Compiler Error Message: CS0021: Cannot apply indexing with []
to an expression of type 'System.Web.Mvc.MvcHtmlString'
EDIT 2
这些都是致使铸件的字典附带的错误:
Url.Action("foo").ToDictionary<string,int>();
出于显而易见的原因返回CS1501: No overload for method 'ToDictionary' takes 0 arguments
,但VS2010调试程序可识别即结果为字典:
但是,当我添加参数(Url.Action("foo").ToDictionary<string,int>(x=>x);
)时,它会停止识别它是字典,但我不确定这些参数是否正确(它基于我发现的here。
为什么你想从视图调用控制器来获取字典?你试图达到什么目的?我觉得你正试图以完全错误的方式实现某些目标。 – VJAI 2012-07-18 13:23:08
上面的代码大大简化了故障排除。它背后的想法是,视图从滑块获取值并将其传递给控制器,控制器重新计算并更新视图上的几个分数。有一个重要的计算要求,所以我宁愿让它在服务器上运行,而不是在本地实例上运行。 – ahollenbach 2012-07-18 13:33:44