Asp.net mvc: ссылка на объект обязательна Ошибка при вызове функции в [Обязательный (ErrorMessage) - PullRequest
0 голосов
/ 30 апреля 2019

Я создаю веб-приложение в asp.net-mvc, в котором отправляю 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 Ответ

2 голосов
/ 30 апреля 2019

Вы не можете вызывать методы для инициализации атрибутов, потому что эти значения должны быть известны во время компиляции. Однако есть два других возможных способа:

  1. ASP.NET MVC поддерживает стандартные способы локализации, что является рекомендуемым способом. Это очень широкая тема, поэтому я могу оставить здесь только несколько ссылок [1] , [2] . Обратите внимание, что даже используемый атрибут RequiredAttribute имеет свойства ErrorMessageResourceName и ErrorMessageResourceType - это сильные намеки на то, что вам следует использовать стандартные инструменты для стандартных задач.

  2. Если вы все еще хотите придерживаться того, что у вас есть, определите свой собственный атрибут и реализуйте там свою собственную логику:

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

    Однако я бы настоятельно рекомендовал вместо этого рассмотреть вариант 1. Вам может понадобиться немного больше времени, чтобы изучить и реализовать это, и это не будет тратить время впустую, и может сэкономить вам много головной боли по мере роста вашего приложения

...