Asp.net mvc: 需要对象引用在 [Required(ErrorMessage) 中调用函数时出错

Asp.net mvc: an object reference is required Error while calling a function in [Required(ErrorMessage)

我正在 asp.net-mvc 中创建一个 Web 应用程序,我在其中从我的模型发送一个 Required ErrorMessage,但问题是,我想根据用户的偏好翻译消息,

所以我做了类似下面的事情

[Required(ErrorMessage = convertErrorMessage("Text to translate"))]
public string Reviews { get; set; }

public string convertErrorMessage(string text)
{
   //convertingText in different language
   return convertedText;
}

但我收到以下错误

an object reference is required for non static field

下一行

[Required(ErrorMessage = convertErrorMessage("Text to translate"))]

如果我想实现这个目标,我该怎么做?

您不能调用方法来初始化属性,因为这些值必须在编译时已知。不过还有两种可能的方法:

  1. ASP.NET MVC 支持标准的本地化方式,这是推荐的方式。这是一个非常广泛的话题,所以我只能在这里留下几个链接[1], [2]。请注意,即使您使用的 RequiredAttribute 也具有属性 ErrorMessageResourceNameErrorMessageResourceType - 这些强烈提示您应该为标准任务使用标准工具。

  2. 如果您仍然想坚持现有的,请定义您自己的属性并在其中实现您的自定义逻辑:

    class RequiredLocalizedAttribute : RequiredAttribute {
        // override ErrorMessage get
        // or ErrorMessageString get
    }
    

    但是,我强烈建议改为考虑选项 1。您可能需要更多时间来学习和实现它,这不会浪费时间,并且随着应用程序的增长可能会为您省去很多麻烦