asp.net-mvc – EditorTemplates / Object.cshtml使用EditorFor()而不
|
我正在尝试创建一个复制 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-mvc – ASP.NET MVC和混合模式认证
- asp.net – 在VMware主机中扩展 – 添加vCPU或VM?
- asp.net-mvc – 将id类型从string更改为int时,如何在Web AP
- asp.net-mvc – EntityFramework – 连接字符串在哪里?
- asp.net html控件的File控件实现多文件上传实例分享
- ASP.NET如何在没有最终用户删除的情况下在屏幕上编写消息?
- asp.net-mvc-4 – 升级到.NET 4.5和EF 5后,“启用迁移”失败
- asp.net – 当内容页面位于子文件夹中时,jQuery无法在母版页
- asp.net – 如何使用System.Drawing绘制透明图像?
- asp.net-mvc – 单元测试RedirectToRouteResult
