asp.net-mvc – 动态类型的ViewPage
这可能吗?这是我正在尝试的:
public ActionResult Index() { dynamic p = new { Name = "Test",Phone = "111-2222" }; return View(p); } 然后我的视图继承自System.Web.Mvc.ViewPage< dynamic>并尝试打印出Model.Name. 我收到一个错误:’<> f__AnonymousType1.Name由于其保护级别而无法访问 那么基本上,我正在试图做的只是不可能?为什么或者为什么不? 更新:这是我的观点 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <asp:Content ...> <%=Model.Name%> <%=Model.Phone%> </asp:Content> View构造函数内置于框架中. 解决方法
匿名类型不能由方法返回;它们仅在定义它们的方法的范围内有效.
您应该使用以前定义的Model类,并将其传递给您的View.传递没有定义每个字段的Model类没有错误. 更新: 我以前我错了.这应该工作.也许问题在视图内.你能发布更多的代码吗?特别是View及其构造函数. 更新第二个: 好的,将匿名类型传递给另一种用作动态变量的方法是错误的 – 可以做到这一点. 但我也错了,我相信你想做的事情会奏效.不幸的是,你不会.问题是您正在使用ViewPage< TModel>,它使用ViewDataDictionary< TModel>内部.因为它们需要强大的类型,所以您将无法使用动态对象.内部结构在内部不使用动态,并且在类型失败时指定动态. 需要的是DynamicViewPage类和相应的DynamicViewDataDictionary类,它接受对象并将其在内部存储为动态.然后你可以使用匿名类型并将其传递给您的Views. 也就是说,你不会得到任何东西.您可以按照您所做的(即<%= Model.Name%>)指定您的观看次数,但不会受益于强力打字.没有智慧,没有类型的安全.你也可以像@Dennis Palmer所说的那样使用无类型的ViewDataDictionary. 这是一个有趣的(对我来说,不幸的是吸收)思想实验,但我认为最终不会发生.声明公共类型并将其传递给您的视图,或使用无类型字典. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – jQuery无法在我的主机上运行?
- 帮助ASP.NET中的Elmah配置
- asp.net – 如何为Bootstrap按钮创建Button_Click()事件?
- asp.net – 如何在所选项目上启用工作流状态“写入”?
- asp.net-mvc-3 – Glimpse.axd 403ing在IIS上
- asp.net-mvc – Azure移动服务与Web API
- asp.net – 如何在.aspx页面的文件后面创建多个代码
- asp.net – 如何强制使用default.aspx而不是www.domain.com
- asp.net – 使用Eval连接文本
- 如何将现有的ASP.NET应用程序升级到ASP.NET vNext
- 如何使用ASP.NET MVC 6重定向未经授权的用户
- asp.net – .NET JIT编译器会优化方法调用吗?
- asp.net – 可以将OWIN Nancy与Web Forms一起使用
- 我可以通过编程方式从我的ASP.NET应用程序向IIS7
- 一步一步创建ASP.NET MVC5程序[Repository+Autof
- asp.net-core – 在VS2017中为.NET CORE 2.0设置
- asp.net-mvc – IIS 7上的ASP.net MVC返回空白页
- asp.net – 将mvc应用程序发布到Web服务器后无法
- ASP.NET CORE中使用SESSION
- asp.net-mvc-4 – 在常规MVC项目中使用breeze而不