如何向 MVC3 中同一对象的实例显示不同的必需消息?

2023-11-22

我有一个 Razor MVC3 项目,其中表单中有两条用户记录,一条用于关键联系人,一条用于备份联系人。例如;

public class User
{
    [Required(ErrorMessage = "First name is required")]
    public string FirstName { get; set; }
}

验证一切正常,除了用户无法填写字段的小问题,它说“需要名字”,但我想向用户指出缺少其中一个名字字段。例如“需要备用联系人的名字”或“需要主要联系人的名字”。

理想情况下,我想在类上保留 [Required] 注释,因为它在其他地方使用。

这似乎是那些可能被遗漏的小案例之一,并且不容易实现,但请证明我错了。

Ryan


实现此目的的一种方法是为此屏幕使用单独的视图模型,而不是包含所有错误消息的单个用户模型。在新的视图模型中,您可以拥有 BackupContactFirstName 属性、KeyContactFirstName 属性等,每个属性都有其单独的错误消息。 (或者,此视图模型可以包含单独的用户模型作为属性,但我发现 Microsoft 的客户端验证不能很好地处理复杂模型,并且更喜欢平面属性)。

您的视图模型将如下所示:

public class MySpecialScreenViewModel
{
    [Required(ErrorMessage = "Backup contact first name is required")]
    public string BackupContactFirstName { get; set; }


    [Required(ErrorMessage = "Key contact first name is required")]
    public string KeyContactFirstName { get; set; }
}

然后将视图模型传递给视图,如下所示:

@model MySpecialScreenViewModel
...

您的后控制器操作将从视图模型收集属性(或将它们映射到单独的用户模型)并将它们传递给适当的数据处理方法。

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

如何向 MVC3 中同一对象的实例显示不同的必需消息? 的相关文章

  • 如何使用 MVC 属性验证列表是否具有大于零的非空元素?

    我正在尝试实现一个可以获取不同数量的文件的文件上传器 文件输入元素的名称都相同 因此会生成 MVC3 乐意绑定的文件列表 所以在我的控制器中我有 public virtual ViewResult UploadReceive IEnumer
  • MVC3 中的 ModelState.IsValid 与 IValidatableObject

    所以根据Gu http weblogs asp net scottgu archive 2010 07 27 introducing asp net mvc 3 preview 1 aspx IValidatableObject Valid
  • 如何重新包含排除的文件夹

    所以我只是无意中点击了我的项目的致命一击Exclude From Project代替Add在我的控制器文件夹中 当尝试添加名为 Controllers 的文件夹时 我收到错误 此文件夹存在 但是 如果我尝试单击该项目 gt Add Exis
  • JQuery 验证代码不允许删除输入的文本

    我从这个问题借用了一些代码 见回复4 如何使用 jquery 阻止或限制输入字段中的特殊字符 https stackoverflow com questions 895659 how do i block or restrict speci
  • Ajax.BeginForm 无法与 Html.ValidationSummary 一起使用

    我正在尝试使用 Ajax BeginForm 将数据发布到控制器 如果出现特定错误 表单应重新呈现并显示添加到 ModelState 的自定义错误消息 由于某种原因 错误消息未显示 我什至正在尝试以下不起作用的测试用例 我是否遗漏了什么 E
  • 在 mvc 中对远程验证的成功响应执行一些操作

    我正在使用远程验证来检查我的 asp net mvc 3 应用程序 C 注册期间用户名的可用性 我使用 MVC 远程属性验证 Remote IsUserNameAvailable User public string UserName ge
  • 在 Rails 3.2 + SimpleForm 中显示嵌套表单有错误的字段

    我有一个Flight模型嵌套在一个FlightLog模型 AFlightLog可能包含许多航班 我使用 SimpleForm 进行引导安装 这样当验证失败时 可以用错误类包围带有错误的表单元素 问题是 即使触发了嵌套模型的验证 simple
  • 根据 MVC 中的文化的日期时间格式

    我有一个 MVC 视图 其中列出了一个名为 CreatedOn 的日期时间类型列 值的格式如下 日 月 年 时 分 秒 当我单击编辑链接修改值时 我获得相同的格式 当我修改编辑值时 出现验证错误 字段 CreatedOn 必须是日期 我的
  • 使用 ASP.NET MVC Linq To SQL 进行验证:如何避免编辑生成的源?

    我正在阅读一些关于验证的文档ASP NET MVC 忽略那些建议重新发明轮子编写自己的验证逻辑的人 大多数文章提倡使用xVal或数据注释验证器 两者都允许通过装饰模型的属性 进行声明性验证 我想我会去xVal 因为它似乎是最受建议的 因此
  • Azure 网站中的 404 处理

    我在 Azure 上有一个 MVC 网站 我已经编写了一个控制器操作来代表资源 该操作应该返回 HTTP 404 但正文内容应该是一些 HTML 我在其中解释了 404 的原因 这是作为一个标准操作实现的 该操作设置Response Sta
  • 如果tinyMCE编辑器为空,如何通过在其旁边附加字符串来验证它?

    我需要验证一个表格 此表单有一些下拉菜单和tinyMCE编辑器 我通过在每个字段后附加字符串 Required 如果为空 来验证此表单 但是我无法验证tinyMCE编辑器 如果编辑器为空 我尝试了类似的操作 tinyMCE get tiny
  • 必填字段验证器中的数字验证

    是否可以将数字验证放入 asp net 文本框中的必填字段验证器中 您应该使用比较验证器 http msdn microsoft com en us library system web ui webcontrols comparevali
  • 如何对我的自定义验证属性进行单元测试

    我有一个自定义的 asp net mvc 类验证属性 我的问题是如何对其进行单元测试 测试类是否具有该属性是一回事 但这实际上并不能测试其中的逻辑 这就是我想测试的 Serializable EligabilityStudentDebtsA
  • 如何在字段值无效的情况下更改 Struts2 验证错误消息?

    我在 Web 表单上使用 Struts2 验证 如果字段假设为整数或日期 则
  • 验证假名输入

    我正在开发一个允许用户输入日语字符的应用程序 我试图想出一种方法来确定用户的输入是否是日语假名 平假名 片假名或汉字 应用程序中的某些字段不适合输入拉丁文文本 我需要一种方法将某些字段限制为仅限汉字或仅限片假名等 该项目使用UTF 8编码
  • 如何告诉 razor 不要 html 转义

    我在一个项目中使用 asp net mvc 3 和 razor 在某些情况下 我需要从控制器序列化数组 将其放入视图数据中并将其分配给 js 对象 但是当我使用它输出时 ViewData some array 结果是 html 转义所以我得
  • 来自控制器的 Rails 验证

    有一个联系页面 可以输入姓名 电话 电子邮件和消息 然后发送到管理员的电子邮件 没有理由将消息存储在数据库中 问题 如何 在控制器中使用 Rails 验证 根本不使用模型 或者 在模型中使用验证 但没有任何数据库关系 UPD Model c
  • 绑定到 ViewModel 时如何更新 Model?

    我有一个 HttpPost 操作方法签名如下 HttpPost public ActionResult Edit ExistingPostViewModel model Save the edited Post 现在 在过去 当我没有使用
  • 如何使用 Error.cshtml 视图中的过滤器放入 ViewBag 的数据?

    我有一个操作过滤器 负责将一些通用信息放入 ViewBag 中 供共享 Layout cshtml 文件中的所有视图使用 public class ProductInfoFilterAttribute ActionFilterAttribu
  • 禁用视图中所需的验证特定字段 ASP.NET MVC 4

    如果有人能给我一些提示 我将不胜感激 我搜索了一段时间 我什至找到了一个帖子 我认为它可以解决我的问题 但它没有 在某些情况下禁用必需的验证属性 https stackoverflow com questions 5367287 disab

随机推荐

  • Notepad++ 6.1.x 和 HTMLTidy

    有人可以使用 Notepad 6 1 x 和 HTMLTidy 并可以告诉我在哪里下载 dll config 使用 Notepad 6 1 4 Win 7 x86 是的 这个 Notepad TidyHTML 问题已经被问过 但它要么引用过
  • 根据条件从列表中删除重复项目

    我有一个具有属性 名称 价格 的项目类 Item1 100 Item2 200 Item3 150 Item1 500 Item3 150 仅当名称存在多次且价格为 500 美元时 我才想使用 LINQ 删除项目 而不创建自定义比较器 对于
  • 防止保存时删除主体为空的方法

    一直按 Ctrl S 是我的一个很矛盾的习惯 不利的一面是delphi在保存时删除空函数 过程 有没有办法防止 IDE 删除保存时主体为空的函数 过程 根据 OP 请求从评论转换而来 我的评论太小 无法回答 所以我将添加一些可能对OP来说已
  • DMARC -spf 和 DKIM 记录查询

    我有一个与第三方供应商的场景 我们公司有很多第三方邮件服务 我已经使用 p none 设置了 dmarc 并且使用已知的发送服务器更新了 SPF 记录 您能否澄清我在 Dmarc org 网站上读到的有关使第 3 方供应商符合 Dmarc
  • JQuery - 实时复制字段输入文本

    我试图弄清楚如何将一个表单字段中的用户文本输入复制到另一个表单字段中 具体来说 当有人在联系表单中填写其电子邮件地址时 该地址将在邮件列表表单中重复 这两种表单都使用 ajax 因此不必担心输入文本在提交时丢失 这是我的代码 div div
  • 如何在 Node.js 中监听剪贴板事件?

    我希望能够侦听 Node js 中的剪贴板事件 更准确地说是复制事件 我已经在java中使用过windows键盘钩子 所以我已经对这个主题有点熟悉了 由于我使用 Ubuntu 10 10 作为我的主要操作系统 因此我对 Ubuntu 桌面解
  • angularjs $httpProvider 拦截器文档

    我是角度 和编程 的新手 这是一个看似简单的问题 但我无法弄清楚 一些教程建议使用 httpProvider interceptors push interceptorName 操纵http请求和响应 我想了解更多关于拦截器的事情 所以我查
  • jQuery 在悬停时打开 div;自动滚动浏览

    我有一个UL列表中包含多个链接 每个项目都链接到自己的项目DIV 当用户将鼠标悬停在 UL 链接上时 正确DIV显示框 这是我的 HTML 代码 ul class productlist li a href class product li
  • 使用 python pandas 将新数据框附加到现有 Excel 工作表

    我目前有这段代码 它工作完美 它循环遍历文件夹中的 Excel 文件 删除前 2 行 然后将它们另存为单独的 Excel 文件 它还将循环中的文件保存为附加文件 当前附加文件覆盖每次运行代码时都会使用现有文件 我需要将新数据附加到底部已有的
  • 批量删除(截断与删除)

    我们有一个包含 150 多万条记录的表 我们需要清除 删除所有行 由于删除操作会写入 t log 因此删除操作将永远持续下去 并且我们无法更改整个数据库的恢复模型 我们已经测试了截断表选项 我们意识到 截断会从表中释放页面 如果我没记错的话
  • 如何将 EFS 共享挂载到 AWS Fargate?

    我有一个存储容器日志的 AWS EFS 共享 我想将此 nfs 共享 aws efs 挂载到 AWS Fargate 是否可以 任何支持文档链接将不胜感激 你可以这样做自2020年4月起 这有点棘手但有效 我遇到的最大问题是您需要将 平台版
  • 使用 java.io 寻找 ByteArrayInputStream

    我怎样才能寻找 改变立场 ByteArrayInputStream java io 这是显而易见的事情 但我似乎无法在任何地方找到这种方法 mark reset还不够 我需要将位置设置到InputStream 如果不能使用java io我必
  • 在Java中裁剪图像[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试用 Java 剪切图像的某个部分并将其保存回磁盘 有没有一个函数可以从X Y上剪切指定宽度和高度的图像 你通常会 创建一个新的BufferedImage dst如下 具
  • 如何在PHP中对日期数组进行排序?

    我是 php 新手 我有 php 日期数组 0 gt 11 01 2012 1 gt 01 01 2014 2 gt 01 01 2015 3 gt 09 02 2013 4 gt 01 01 2013 我想将其排序为 0 gt 11 01
  • Windows 命令提示符中的 EOF 不会终止输入流

    Code include
  • ATL 简单对象向导 - “对象 Xxx 已存在”错误

    我正在尝试使用以下命令在我的 DLL 中创建一个新的 COM 对象ATL 简单对象向导在 Visual Studio 2005 中 我输入对象的短名称 然后派生出所有其他字段 但是 当我点击Next在向导中 出现以下错误消息 Object
  • 对 boost::timer::auto_cpu_timer 的未定义引用

    我尝试使用 g 4 4 在 Debian 上的远程服务器上编译带有 boost 库的小 cpp 文件 我为此目的使用 Netbeans 我的家用机器运行的是 Windows 7 解决了链接下一个代码的一些问题后 include
  • $_SERVER['HTTP_ORIGIN'] 不起作用

    当我使用 SERVER HTTP ORIGIN echo SERVER HTTP ORIGIN 返回 注意 未定义索引 第 12 行 D xampp htdocs safe test php 中的 HTTP ORIGIN 怎么了 The O
  • 如何知道 Mac 中当前架构是 i386 还是 x86_64? (Xcode)

    我正在处理在不同架构中需要不同参数的相机 是否有一个标志可以检查我的 Mac 中是 32 位还是 64 位 我正在尝试这个 但似乎不起作用 我总是得到 32 位 if defined PER ARCH CFLAGS x86 64 NSLog
  • 如何向 MVC3 中同一对象的实例显示不同的必需消息?

    我有一个 Razor MVC3 项目 其中表单中有两条用户记录 一条用于关键联系人 一条用于备份联系人 例如 public class User Required ErrorMessage First name is required pu