使用 ASP.NET MVC 3 本地化非数据注释错误的最佳方法是什么?

2024-02-11

借助数据注释,现在可以轻松使用 Resource.resx 文件本地化错误消息,例如:

public class Student
{
    . . .

    [Required(ErrorMessageResourceName ="Required",
     ErrorMessageResourceType = typeof(StudentResources))]
    [StringLength(16)] 
    [Display(Name = "FirstName", ResourceType = typeof(StudentResources))]
    public string FirstName { get; set; }

    . . .
}

现在,假设我想检查学生是否已经为给定的月份和年份付款:

public bool CheckIfAlreadyPaid(Payment payment)
{
    return repository.GetPayments().Any(p => p.StudentId == payment.StudentId &&
                                        p.Month == payment.Month &&
                                        p.Year == payment.Year);
}

如果他已经付款,我将在服务层执行以下操作:

if (CheckIfAlreadyPaid(payment))
{
    modelState.AddModelError("AlreadyPaid",
    Resources.Views.Payment.PaymentCreateResources.AlreadyPaid);
}

它有效,但我对引用服务层内的资源文件没有信心。

是否有一种标准或更好的方法来本地化与模型属性(数据注释)无关的错误消息 - 来自业务逻辑规则的错误?我还应该将这些错误添加到 ModelStateDictionary 中吗?


我同意,我认为这不应该在服务层。看起来它可以放入自定义数据验证属性中,或者使用该级别的其他方法进行处理(使用流畅的验证 http://fluentvalidation.codeplex.com/可能是一个不错的选择)。无论哪种方式,我认为只要验证保留在 MVC 应用程序本身中,您就可以轻松地使用资源文件来存储消息。

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

使用 ASP.NET MVC 3 本地化非数据注释错误的最佳方法是什么? 的相关文章

随机推荐

  • CLI 模式下的 PHP APC

    PHP中的APC模块在CLI模式下运行时是否支持代码优化 例如 当我运行一个文件时php f
  • XmlMassUpdate - 替换值节点

    我正在尝试使用 XmlMassUpdate 根据构建版本类型更新我的配置文件 似乎没有关于如何在任何地方更新新的 app config vs2008 设置格式的文档 这是配置部分
  • 在命令行上评估 emacs lisp 表达式

    我是 emacs 的新手 我正在 redhat linux 上使用 emacs 24 1 并尝试评估 elisp 表达式 我想要 emacs 做的是评估 elisp 表达式而不启动 emacs 本身 我正在尝试不同的事情 emacs eva
  • 将一个列表中的元素添加到另一个 C#

    将一个列表的元素添加到另一个列表的最简单方法是什么 例如 我有两个列表 列表 A 包含 x 项 列表 B 包含 y 项 我想将 B 的元素添加到 A 中 以便 A 现在包含 X Y 项 我知道这可以使用循环来完成 但是有内置的方法吗 或者有
  • App Engine 上的云数据存储客户端库 - NDB 或 google-cloud-datastore

    根据 Google 的文档 我似乎有两个使用 Python 连接到数据存储的主要选项 App Engine 的 NDB 数据存储库和适用于 Python 的 Google Cloud Datastore API 我目前使用的是 App En
  • 如何查找 PostgreSQL 中是否存在函数?

    与表或序列不同 用户定义的函数无法通过pg class http www postgresql org docs 9 3 static catalog pg class html 有以下问题如何找到要删除的所有函数的列表 https sta
  • 使用opengl es着色器将YUV转换为RGB

    我想在 opengl es 着色器中仅使用一个包含 yuv 数据的采样器将 yuv 转换为 RGB 我的代码如下 1 我将 yuv 数据发送到纹理 GLES20 glTexImage2D GLES20 GL TEXTURE 2D 0 GLE
  • 在函数事件(onChange)中调用函数,来自在Leaflet和Vue.js中创建的Select

    我正在 Vue js 和 Leaflet 中制作一个应用程序 在此应用程序中 我有一个使用 L DomUtil 创建的 Select in leaflet this select L DomUtil create select leafle
  • WEBUSB获取串口数据PL2303

    我正在尝试从通过 RS 232 串行通信进行通信的秤上获取读数 并将值使用 WebUsb API 传输到 Web 应用程序中 我正在获取数据 但解码后它是这样的 我在串行终端中获得了正确的数据 这是数据的代码 navigator usb r
  • 尝试在R中合并多个csv文件

    我正在尝试使用 R 合并多个 csv 文件 所有 CSV 文件都具有相同的字段 并且都是仅包含这些 CSV 文件的共享文件夹 我尝试使用以下代码来做到这一点 multmerge function mypath filenames list
  • 节点断言:测试错误消息

    使用节点的断言模块如何测试错误消息 throw new Error Email is required 我使用assert throws来检查是否抛出错误 assert throws myFunction Error 但这并不提供检查消息的
  • Java Servlet getParameter 获取 URL 参数

    我正在构建一个网站 该网站将 url 提交给 servlet 以进行分析 在客户端 我将 url 作为编码参数提交 例如 Submit http www site com Goes to http localhost myservlet u
  • 用无参构造函数记录?

    我正在尝试构建一个使用实体框架的 Web 应用程序 ASP NET MVC3 但我再次碰壁 当尝试对视图中的集合运行 foreach 循环时 它会引发以下异常 System InvalidOperationException 类 GvG E
  • 在 MVC4 中创建和编辑相同的视图

    我们可以使用单个剃刀视图来执行创建和编辑操作吗 如果是 我们如何实现这一目标 我不推荐它 这应该是一个相当长的答案 因为正常的 MVC GET POST 工作流程的过程 请求和工作流程涉及很多事情 我将尝试用所需的最少信息来回答您的问题 以
  • 在 Java 中实例化一个对象而不将其分配给变量有什么意义?

    有什么用new当您不将结果对象分配给引用时使用关键字 这是样本 public static void main String args ample Display display new Display new SWTApp display
  • 发布新任务时 Celery Flower 中出现“未知任务”错误

    我正在运行 celery 3 1 11 和flower 0 6 0 我有一个这样配置的芹菜应用程序 myapp tasks celery py from future import absolute import from celery i
  • 如何使用 Ransack 别名

    我正在尝试使用 Ransack 实现别名 以使我的 URL 搜索查询更短 根据文档 https github com activerecord hackery ransack ransack aliases https github com
  • 从 wsdl 生成 php 代码 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多 Web 服务 需要为其编写 PHP 客户端 现在我可以为每个 WSDL 文件手动编写包装器 但我想看看是否有一个工具可以帮助我在
  • 如何在bitbake中访问构建目标名称

    在 yocto 中 我们通过运行命令 bitbake target name 来构建目标 是否有存储 target name 值的全局变量 我如何访问其他相关食谱中的 target name 所以我有一个硬件 我可以为其构建多个 Linux
  • 使用 ASP.NET MVC 3 本地化非数据注释错误的最佳方法是什么?

    借助数据注释 现在可以轻松使用 Resource resx 文件本地化错误消息 例如 public class Student Required ErrorMessageResourceName Required ErrorMessageR