asp.net-mvc – mvc视图中的动态类型
发布时间:2020-12-16 00:04:21 所属栏目:asp.Net 来源:网络整理
导读:Possible Duplicate: 07000 我试图在我的MVC应用程序中使用动态类型模型.我有以下代码: 在控制器中: var model = new { Name = "test name",Family = "m" };return this.View(model); 在我看来,我有: @model dynamic@if(Model!=null){ p @Html.Raw(Model.
我试图在我的MVC应用程序中使用动态类型模型.我有以下代码: var model = new { Name = "test name",Family = "m" }; return this.View(model); 在我看来,我有: @model dynamic @if(Model!=null) { <p> @Html.Raw(Model.Name) </p> } 当我运行这个时,我收到以下错误: 'object' does not contain a definition for 'Name' (System.Exception {Microsoft.CSharp.RuntimeBinder.RuntimeBinderException) 为什么我会收到此错误? 解决方法
你所展示的不是动态类型.这是一种匿名类型.这是一个巨大的差异.
您不能将匿名类型用作模型.这是因为编译器将匿名类型作为内部发出.这意味着只能使用当前程序集访问它们.但是正如您所知,Razor视图由ASP.NET运行时编译为单独的程序集,无法使用这些匿名类型. 显然,在这种情况下,正确的方法是使用视图模型: public class MyViewModel { public string Name { get; set; } public string Family { get; set; } } 然后让控制器操作将此视图模型传递给视图: var model = new MyViewModel { Name = "test name",Family = "m" }; return this.View(model); 以便您的视图可以使用它: @model MyViewModel @if (Model != null) { <p>@Model.Name</p> } 有些人(不是我,我永远不会推荐这样的东西)也使用ViewBag,这样他们就不需要模型了: ViewBag.Name = "test name"; ViewBag.Family = "m"; return this.View(); 然后在视图中: <p>@ViewBag.Name</p> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET MVC EF 连接数据库(二)-----Model First
- asp.net-mvc – 工作单元,存储库,注入,使用块
- asp.net-mvc – 显示主键是一种危险
- HttpClientFactory与Steeltoe结合来完成服务发现
- 1:ASP.NET Core MVC 2.x 全面教程
- asp.net-mvc – S#arp架构与直接IOC NHibernate MVC
- .net – 如何搜索以我的plaftform为目标的Nuget包?
- asp.net – 如何在HTML标记中阅读web.config APP键设置
- 在asp.net中输入密钥发出错误按钮
- asp.net-mvc-3 – 超时在ASP.Net MVC FormsAuthentication中