使用继承的 MVC2 DataAnnotations 验证

2024-05-07

我有一个 .NET 2.0 类,其属性被标记为 virtual。我需要在 MVC2 应用程序中使用该类作为模型。因此,我创建了一个继承自 .NET 2.0 类的 .NET 3.5 类,并将 DataAnnotations 属性添加到新类中的重写属性中。下面是我所做的一个片段

// .NET 2.0 class
public class Customer
{
   private string _firstName = "";
   public virtual string FirstName
   {
      get { return _firstName; }
      set { _firstName = value; }
   }
}

// .NET 3.5 class
public class MVCCustomer : Customer
{
   [Required(ErrorMessage="Firstname is required")]
   public override string FirstName
   {
      get { return base.FirstName; }
      set { base.FirstName = value; }
   }
}

我已使用该类作为使用 HtmlFor 帮助程序的 MVC2 视图的模型。服务器端验证可以正常工作,但客户端验证却不能。具体来说,验证错误不会显示在页面上。

我错过了什么,或者只能使用伙伴类来做到这一点。

Thanks.

编辑1: 我现在已经尝试过使用好友验证类,但这也不起作用。

编辑2: 我现在发现是提供给 HtmlFor 助手的 lambda 表达式导致了这个问题。例如

Html.TextBoxFor(m => m.FirstName) 调用 ModelMetadata.FromLambdaExpression 方法,该方法将 MemberExpression (expression.Body) 的 DeclaringType 计算为 Customer 类,而不是 MVCCustomer 类。

我尝试将 lambda 表达式更改为 Html.TextBoxFor((MVCCustomer m) => m.FirstName) 但 DeclaringType 仍然是 Customer。

有没有办法让 DeclaringType 成为 MVCCustomer 类型而不是 Customer 类型。


我现在通过在 .net 3.5 类中的属性上使用 new 关键字来解决这个问题,如下所示

// .NET 2.0 class
public class Customer { 
  private string _firstName = "";
  public string FirstName
  {
     get { return _firstName; }
     set { _firstName = value; }
  }
}

// .NET 3.5 class
public class MVCCustomer : Customer {
   [Required(ErrorMessage="Firstname is required")]
   public new string FirstName 
   { 
      get { return base.FirstName; } 
      set { base.FirstName = value; }
   }
}

现在,这可以按预期工作,并且 MVCCustimer 类中的 DataAnnotations 属性已正确应用。

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用继承的 MVC2 DataAnnotations 验证 的相关文章

  • 比较 2 个 linq 应用程序:意外结果

    我起草了2 ASP NET应用程序 using LINQ 一个连接到微软SQL服务器 另一个对某些专有内存结构 这两个应用程序都可以使用以下表格3 个 int 字段 有500 000 条记录 内存结构与 SQL Server 表相同 使用的
  • 预编译的 asp.net 网站中的 - 这重要吗?

    我正在 Visual Studio 2008 上使用 Web 部署项目部署一个预编译和全页面合并的网站 请注意 所有程序集和项目都已在发布模式下编译 我的所有页面都是在发布模式下预编译的 所以它们不会被重新编译 它们只会被运行时加载 在不需
  • ASP.NET 4.0 中的模拟 HttpRequest

    我见过很多类似的帖子 但没有一个能真正解决我的特殊情况 我正在 ASP NET 4 0 Web 应用程序 ASP NET Forms 而不是 MVC 中编写单元测试 代码中有几个地方我称之为ServerVariables调用变量的集合 例如
  • System.Linq.Dynamic 不支持 OrderByDescending("someColumn")?

    好的 在我们的项目中 我使用 System Linq Dynamic 库 但我刚刚注意到我无法执行以下操作 myDataSource OrderByDescending someColumnName 因为我收到以下错误 重载解析失败 因为无
  • ASP.NET DropDownList OnSelectedIndexChanged 事件未触发

    我试图同时使用一些 AJAX 和 ASP Net 来运行函数而无需刷新整个页面 但我在执行此操作时偶然发现了一个问题 这是我的代码
  • 会话变量由于某种原因丢失

    我尝试建立一个电子商店 每件物品旁边都有一个asp imagebutton单击此图像按钮时 我正在检查会话变量是否session basket 是否存在 如果不存在 则我将值添加到列表 实体类 中 然后在会话中添加此列表 如果会话不为空 那
  • ASP.NET 显示 SVN 修订号

    我在 Stack Overflow 页脚中看到显示了 SVN 修订号 这是自动化的吗 如果是的话 如何在 ASP NET 中实现它 其他语言的解决方案也是可以接受的 确保该文件有 svn keywords Rev Id 然后把 Rev 在那
  • include 内的 ASP.net 代码不执行

    我已经很长时间没有涉足服务器端了 但在我看来 嵌入在包含的代码文件中的脚本应该正常执行 由于某种原因 情况似乎并非如此 注意 下面显然是一个基于我的调试尝试的简化实现 实际上 我在实际项目中还得到了其他包含平面 HTML 和 JavaScr
  • 扩展授权属性

    我实施了 CustomAuthorization 属性基于 Authorize 属性 我的属性如下所示 public class CustomAuthorizeAttribute AuthorizeAttribute public eUse
  • .net Framework 4.0 中地理 SQL Server 数据类型的 C# 等效项是什么?

    net web应用程序使用 net 4 0框架 我有一个存储过程 它接受 sql server 2008 R2 中的地理数据类型 我想将 C 代码中的数据插入 SQL Server 但我无法找到应在 C 中使用哪种与 SQL Server
  • 是否有正确的方法将自定义 Javascript 添加到 ASP.NET MVC 5 页面?

    目前 我已将 jQuery 源文件添加到 ASP NET 项目的 Scripts 文件夹中 在 Layout cshtml 页面中 我包含了 Scripts jquery 2 1 1 min js 现在 我可以在我制作的每个页面上包含 jQ
  • ADO.NET 池连接无法重用

    我正在开发一个 ASP NET MVC 应用程序 该应用程序使用 EF 6 x 来处理我的 Azure SDL 数据库 最近 随着负载的增加 应用程序开始进入无法再与 SQL 服务器通信的状态 我可以看到有 100 个到我的数据库的活动连接
  • 在 ASP.NET MVC 2 中使用 name="array_name[]" 作为表单元素发布数组

    再会 在 PHP 中 可以使用方括号将 name 属性分配给输入元素 如下所示 name my value PHP 会在服务器端自动将其转换为数组 这在 ASP NET MVC 中可能吗 如果没有 是否有其他方法可以在 ASP NET MV
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • nHibernate 使用 Log4Net 进行日志记录,线程会话问题

    大家好 这里有一个小问题 我正在努力解决这个问题 我目前正在开始使用 nHibernate 由于工作需要 我不得不这样做 并且我在 nHibernate 的会话和多线程方面遇到了一些困难 我想在这里完成的任务是让 Log4Net 将所有内容
  • C# 查询两个数据库的数据

    我目前有一个查询 我正在从两个不同的数据库获取数据 这些数据被附加到一个名为 accountbuys 的列表中 我的第一个表有三个数据条目 3个想要购买股票的帐户 下一张表有 17 个数据点 购买 17 只股票 I am merging t
  • UpdatePanel 破坏 JQuery 脚本

    这是我想做的事情的简化版本 基本上我有一个数据列表 里面有很多东西 当你将鼠标悬停在数据列表中的项目上时 我希望 jquery 隐藏 显示东西 问题是 在我进行数据绑定后 如果 gridview repeater datalist 位于更新
  • 相当于 C# 中的 $_FILES

    C 中 PHP 的 FILES 变量相当于什么 或者至少以相同的方式访问文件 我有一个无法更改的上传表单 需要了解如何获取这些文件 看一眼Request Files 例如 foreach HttpPostedFile item in Req
  • ASP.NET - 在表示层中显示业务层错误

    目前 在我正在开发的 ASP NET 应用程序中 基本验证 即必填字段 是在表示层中使用验证器和 ValidationSummary 完成的 这对我来说非常有用 因为 ValidationSummary 将显示多个错误消息 假设多个验证器设
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web

随机推荐

  • printf 中的空格作为分组分隔符

    我知道如何使用逗号printf作为分组分隔符以类似格式打印值1 000 000 00 以我正在使用命令的方式打印它 System out printf 2f value 但如何使用空格作为分组分隔符来格式化值 例如1 000 000 00
  • 从扩展后台或弹出窗口发送消息到内容脚本不起作用

    我知道这个问题已经以不同的方式被反复问过 但我尝试过一遍所有的答案 希望我没有错过任何人 但没有一个对我有用 这是我的扩展程序的代码 显现 name test version 1 1 background scripts contextMe
  • 使用 Express/Node 和 MongoDB 响应 POST 请求

    我正在编写一个程序 该程序使用 React 作为前端 并使用 Express Node API 作为后端 然后在 MongoDB 数据库中执行 CRUD 操作 现在 我正在使用本机 JS fetch API 在前端执行 GET POST 操
  • 如何在 React 中正确捕获 Materialize-CSS datepicker 值?

    我希望创建一个带有日期选择器 https materializecss com pickers html在我的 React 组件中物化CSS https materializecss com 该表单捕获的字段不多 而且结构相当简单 返回的表
  • 使用webpack输出ES模块

    使用 Rollup 我可以通过简单地设置来输出 ES 模块format选项 es 我怎样才能用 webpack 做同样的事情 如果现在不可能的话 webpack 有计划添加吗 我在里面唯一找到的东西的文档output libraryTarg
  • magrittr 三通管 %T>% 当量

    我正在查看文档中 magrittr 三通管 T gt 的示例 但我并没有立即明白它在做什么 有人可以展示没有三通管的等效代码是什么吗 rnorm 200 gt matrix ncol 2 T gt plot gt plot usually
  • 以编程方式验证 X509 证书和私钥匹配

    我使用以下命令创建了 RSA 密钥对EVP aes 256 cbc 密码 私钥采用 PEM 编码并具有密码 这需要用户输入密码 这是创建私钥的调用 Save private key bio priv BIO new file full as
  • 用nose测试python多处理池代码

    我正在尝试编写测试nose http nose readthedocs org en latest 建立一些东西 使用多处理计算 我有这个目录结构 code tests tests py test py 看起来像这样 import mult
  • 适用于 iPhone 和 Android 的 sip 堆栈

    我正在寻找适用于 Android 和 iPhone 的 SIP 堆栈 我发现了很多类似的问题 有时已经很老了 我不太关心解决方案是商业的 但这是首选 还是开源的 到目前为止我发现 RADVISION 的 Android 商业解决方案 iPh
  • 如何在 jsp 中访问 ModelMap?

    如何从jsp中的ModelMap访问一个对象 以便调用它的方法 目前我收到此错误 Syntax error on token delete this token JSP Java Controller RequestMapping dash
  • Python 为什么变量在函数执行后不改变? [复制]

    这个问题在这里已经有答案了 我正在为我的 CompSci 课程做作业 出现了这个问题 x 6 def fun x y x 2 x y return x fun x 当运行这个时 打印出的值是 36 但是当运行 print x 时 x 仍然是
  • NoSuchMethodError:org.jboss.logging.Logger.debugf

    我正在尝试使 Spring Spring Data Log4J2 堆栈工作 不幸的是 在 My Glassfish 4 1 Server 上部署该工件时 出现以下错误 org springframework beans factory Be
  • Mongodb 中的读自己写的一致性

    首先 这是Pymongo 文档 http api mongodb org python current examples requests html highlight read 20you 20own 20write 默认情况下 当线程首
  • Android - 从选项卡内的活动内切换选项卡

    目前我有一个 TabHost 它实现了 3 个选项卡 每个选项卡包含一个单独的活动 我的问题是如何在位于选项卡主机内的活动之一中的选项卡之间进行切换 我到处寻找但未能找到这个问题的真正答案 经过长时间与这个问题的斗争 我已经找到了在使用基于
  • 正则表达式中的 \z 和 \Z 之间有什么区别以及何时以及如何使用它?

    From http java sun com j2se 1 5 0 docs api java util regex Pattern html http java sun com j2se 1 5 0 docs api java util
  • 如何解决 java.lang.ClassNotFoundException: org.docx4j.jaxb.ri.NamespacePrefixMapper

    我目前正在尝试使用 docx4j 库将文件从 html 转换为 docx 我已经成功地使用 itext5 从 html 转换为 pdf 但现在由于 jaxb 我在尝试转换为 docx 时遇到了异常 我的项目使用maven 所以我尝试导入很多
  • C# 计算LRC(纵向冗余检查)

    我一直在到处研究这个问题 所有 LRC 实现似乎都没有给我正确的答案 花了几天时间后 我决定将我的代码放在这里 看看其他人是否可以发现问题 这是代码 C Input Data 31303030315E315E31303030325E315E
  • 强制下载不同的文件[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何使用 JavaScript 将时间戳字符串转换为本地时间?

    我有一个 JSP 页面 其中我将存储在数据库中的时间戳作为字符串提取 其形式如下Thu Aug 21 2014 22 09 23 GMT 0530 India Standard Time 当然 我可以按原样在页面中显示它 但是我一直在寻找
  • 使用继承的 MVC2 DataAnnotations 验证

    我有一个 NET 2 0 类 其属性被标记为 virtual 我需要在 MVC2 应用程序中使用该类作为模型 因此 我创建了一个继承自 NET 2 0 类的 NET 3 5 类 并将 DataAnnotations 属性添加到新类中的重写属