asp.net-mvc – EditorTemplates / Object.cshtml使用EditorFor(
发布时间:2020-12-16 04:10:12 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试创建一个复制 Html.EditorForModel()的通用编辑器模板,以便以后自定义和构建. Brad Wilson’s template变得非常接近,但我发现当ViewData(或ViewBag)和模型中存在相同的密钥时,它会窒息.例如,如果视图模型也具有Title属性,则ViewBag.Title会导致问
我正在尝试创建一个复制
Html.EditorForModel()的通用编辑器模板,以便以后自定义和构建.
Brad Wilson’s template变得非常接近,但我发现当ViewData(或ViewBag)和模型中存在相同的密钥时,它会窒息.例如,如果视图模型也具有Title属性,则ViewBag.Title会导致问题.
我学习了here,使用强类型助手(即Html.EditorFor(x => x.Title)而不是Html.Editor(“Title”)似乎有所帮助.所以我试图修改Brad的模板,但我遇到了砖墙,因为到目前为止我没有尝试过任何工作.我无法弄清楚如何在我不知道模型类型的上下文中使用强类型帮助器,例如编辑器模板. 有没有办法像Brad那样创建一个Object模板,但是使用强类型的助手(即LabelFor,EditorFor,ValidatorMessageFor)而不是弱类型的助手(即Label,Editor,ValidatorMessage)? 谢谢. 解决方法
我通过稍微迂回的方式解决了这个问题,方法是在调用@Html.Editor之前删除ViewData,然后再将其放回去.
Object.cshtml: object oldViewData = null; var hasConflictingViewData = ViewData.TryGetValue(prop.PropertyName,out oldViewData); if (hasConflictingViewData) { ViewData.Remove(prop.PropertyName); } @Html.Editor(prop.PropertyName) if (hasConflictingViewData) { ViewData.Add(prop.PropertyName,oldViewData); } 我能想到的唯一另一个选择是使用大量的反射来通常使用运行时类型调用EditorFor,并传入相关属性的表达式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用ASP.NET和IIS进行多线程处理
- asp.net-mvc-3 – SignalR依赖注入问题
- 从Asp.net查看页面调用Ajax调用返回视图的控制器方法
- asp.net – Facebook评论审核困难
- asp.net-mvc – 如何从knockout mvc cart样本计算总购物车价
- asp.net-mvc – 防止在asp.net MVC 3中验证部分表单
- 70-515 MCTS培训套件是否在ASP.NET健康监控问题上出错了?
- asp.net – MVC的最佳实践..使用接口的ViewModel绑定示例
- 如果设备在asp.net web form app中移动,则更改母版页
- asp.net – 自动刷新浏览器缓存
推荐文章
站长推荐
- asp.net – 如何在Windows 10 / IIS 10上附加到I
- asp.net-mvc – 内联如果在Razor View中
- 自定义数据注释ASP.NET MVC C#
- ASP.NET MVC中的URL重定向
- asp.net – 构建动态LINQ查询的最佳方法
- asp.net – 如何禁用Web.Config中的目录浏览
- asp.net-web-api – 使用Web API的Autofac:从Ht
- asp.net-mvc-4 – 使用asp.net MVC4,如何在默认情
- asp.net-mvc – 修改ActionFilter中的模型
- asp.net-mvc – ASP.Net MVC的AntiForgeryToken方
热点阅读