asp.net-mvc – 通过F#代码迭代插入ASP.NET MVC4页面的ViewData
发布时间:2020-12-16 06:27:47 所属栏目:asp.Net 来源:网络整理
导读:叫我疯了,但我正在用F#开发一个ASP.NET MVC4站点.这是我的第一个障碍;在控制器中我提交字典,这样: [HandleError]type FooController() = inherit Controller() member this.Index () = this.ViewData.Add("Foo","Bar") this.ViewData.Add("Baz",dict [ (0,0
叫我疯了,但我正在用F#开发一个ASP.NET MVC4站点.这是我的第一个障碍;在控制器中我提交字典,这样:
[<HandleError>] type FooController() = inherit Controller() member this.Index () = this.ViewData.Add("Foo","Bar") this.ViewData.Add("Baz",dict [ (0,0); (1,3); (2,2); ] ) this.View() :> ActionResult 现在我想迭代Razor模板中的值,该怎么做?我试过这个: @foreach (var time in @ViewBag.Baz.Keys) { <hr /><p>Time is @time,and value is @ViewBag.Baz[time]</p> } 但它抛出了这个错误: Line 119: Total: <span class="highlight">6449</span> kW/h. Line 120: </p> Line 121: @foreach (var time in (@ViewBag.Baz).Keys) Line 122: { Line 123: <hr /><p>Time is @time,and value is @ViewBag.Baz[time]</p> [RuntimeBinderException: 'object' does not contain a definition for 'Keys'] CallSite.Target(Closure,CallSite,Object ) +280 System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite site,T0 arg0) +924 ASP._Page_Views_lobby_Index_cshtml.Execute() in c:Usersknoctedocumentsvisual studio 2012projectsfsolarconclavesolarwebconclavesolarwebwebapiViewsLobbyIndex.cshtml:121 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +280 System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +126 System.Web.WebPages.StartPage.ExecutePageHierarchy() +143 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage) +181 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +378 System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +33 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter,ResultExecutingContext preContext,Func`1 continuation) +853420 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList`1 filters,ActionResult actionResult) +265 System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +837892 System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +28 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +65 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +51 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +15 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +51 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) +288 解决方法
所以你遇到的问题是动态关键字和
explicit interface implementations的已知限制.不幸的是,地图也会遇到这个问题.如果你真的想要使用这样的ViewBag,你可以使用实际的Dictionary< int,int>.
最终,你应该发挥F#的优势,即静态打字和低礼式类型创作.在F#代码中创建轻量级类型,并在视图中使用@model keyword. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-2 – ASP.NET MVC 3 – 自定义SEO友好路由
- asp.net-core-mvc – asp.net核心,包括共享内容文件
- asp.net – Request.ServerVariables [“REMOTE_ADDR”]足够
- asp.net – linq中的switch语句
- ASP.NET MVC应用程序安全性
- asp.net-mvc – 加载符号时Visual Studio调试痛苦地慢
- asp.net-mvc – Asp.Net Mvc 2 Checkbox在模型中总是假的
- asp.net – HttpRequest,HttpWebRequest和WebRequest之间的
- 如何在ASP.NET Core 1.0 RC2中加载程序集
- asp.net mvc 3区域和url路由配置
推荐文章
站长推荐
- asp.net – MVC3 Razor – 到期页面
- asp.net-mvc – Razor中的Direct Model.Property
- asp.net-mvc – 在部分视图中传递参数 – MVC3 /
- asp.net-mvc – 无法加载文件或程序集Oracle.Dat
- 在Asp.net Web API中捕获404错误
- asp.net – 在App_Start中初始化和播种Identity的
- asp.net-mvc – 将ApplicationUser和其他模型移出
- asp.net-mvc – 加载程序集时会发生什么?
- ASP.NET从URL获取物理文件路径
- asp.net-mvc-4 – 无法让ASP.NET 4 Web API返回状
热点阅读