加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 嵌套的EditorFor / DisplayFor覆盖字段名称

发布时间:2020-12-16 07:39:09 所属栏目:asp.Net 来源:网络整理
导读:如果没有使用空字符串覆盖ViewData.TemplateInfo. HtmlFieldPrefix,是否有办法防止前缀在嵌套的强类型EditorFor或DisplayFor帮助程序调用上进行? 这是我迄今为止工作的丑陋标记/代码: %@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControlS
如果没有使用空字符串覆盖ViewData.TemplateInfo. HtmlFieldPrefix,是否有办法防止前缀在嵌套的强类型EditorFor或DisplayFor帮助程序调用上进行?

这是我迄今为止工作的丑陋标记/代码:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Web.Mvc.SelectList>" %>
<% ViewData.TemplateInfo.HtmlFieldPrefix = ""; %>
<%=Html.DropDownList("sort",Model)%>

我已经尝试过*允许指定htmlFieldName但只更改直接级别的重载.如果我在该调用点有一个前缀,我只需更改附加到前缀的内容.

我可以手工编写模板标记,但是对于SelectList对象这样做似乎我只会通过一次调整来复制MVC源,因为它涉及对象数据绑定逻辑.

解决方法

如果视图模型上有属性,而不是直接在模型上执行下拉列表,则可以在其上放置DataAnnontation属性.

public class MyModel
{
   [Display(Name="Your Favorite Choices")]
   public string[] Choices {get; set;}
}

然后在你的代码中

<%= Html.LableFor(m => m.Choices) %><br />
<%=Html.DropDownList("sort",Model.Choices)%>

应该使用该名称.

[希望我从记忆中得到它. :)]

这是MSDN链接:
http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayattribute.displayattribute.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读