asp.net-mvc – 在EditorTemplate中渲染字段名称(通过EditorFor(
我正在ASP.NET MVC中为一个网站构建管理后端。
在ASP.NET MVC应用程序中,我已经开始使用“EditorFor”帮助程序,如下所示: <div id="content-edit" class="data-form"> <p> <%= Html.LabelFor(c => c.Title) %> <%= Html.TextBoxFor(c => c.Title)%> </p> <p> <%= Html.LabelFor(c => c.Biography) %> <%= Html.EditorFor(c => c. Biography)%> </p> </div> 在模型中,“传记”字段已经被装饰为:[UIHelper(“Html”)]。 我有一个’Html’部分视图(在视图/共享/编辑器模板下): <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.XML.Linq.XElement>" %> <textarea class="html"> <%= Model.ToString() %> </textarea> 现在我想将’textarea’的’ID’属性设置为字段的名称,如下所示: <textarea id="Biography" class="html"> ... </textarea> 但是,目前我没有办法做到这一点。 我可以想到的是创建一个包含“Value”属性和“ControlID”属性的“Html”ViewModel。 但是,如果我以此为基础,而不是“System.XML.Linq.XElement”,那么它将不再与“EditorFor”帮助器方法兼容,我必须手动完成所有操作。 有人还有类似的问题吗? 解决方法
您应该能够从视图的ViewData.TemplateInfo.HtmlFieldPrefix属性中提取所需的ID。喜欢这个:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.XML.Linq.XElement>" %> <textarea id="<%= ViewData.TemplateInfo.HtmlFieldPrefix %>" class="html"> <%= Model.ToString() %> </textarea> 为了显示为什么这样工作,这里是TemplateHelpers.cs(MVC2 Preview 1源)中的位置,其中为数据库模板控件初始化了ViewData: ViewDataDictionary viewData = new ViewDataDictionary(html.ViewDataContainer.ViewData) { Model = modelValue,TemplateInfo = new TemplateInfo { FormattedModelValue = formattedModelValue,ModelType = modelType,HtmlFieldPrefix = html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(expression),IsNullableValueType = (underlyingNullableType != null),} }; 在上面的调用中,使用正在编辑的属性的名称对“expression”进行初始化(进一步调用堆栈)。 BTW,@Sperling以下抓住了我最初想念的细节:如果您使用(或可能使用)非默认的HtmlHelper.IdAttributeDotReplacement,那么您将要使用HtmlHelper.IdAttributeDotReplacement替换HtmlPrefix属性中的点。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 编码为utf 8的MVC 3 Razor页面显示了编码
- ASP.NET Web站点项目中的“复制本地”等效参考
- asp.net – URL重写出站规则IIS7
- asp.net-mvc – S#arp架构与直接IOC NHibernate MVC
- asp.net – 让wmd-editor不发布html?
- 实体框架 – 实体框架验证混淆 – 最大字符串长度为’128′
- 如何使用ASP.NET MVC让jQuery.Ajax使用重定向执行正常的POS
- asp.net-mvc-3 – 带抽象类的mvc3 razor editortemplate
- 如何在ASP.NET和C#中每个会话“临时”存储Web服务器上的图像
- asp.net-mvc-4 – Azure上的PushSharp ASP.net MVC4问题. –