6

I need to replace the model state resource (to another language).

I've seen some answers to the question above, but unfortunately I could'nt make it work. Any detailed answer or example would be appriciated.

Thank you.

DaveRandom
  • 87,921
  • 11
  • 154
  • 174

4 Answers4

12

I don't know about v2, but this works on v1:

  1. Add a resource file in App_GlobalResources.
  2. In the resource file you can define strings named PropertyValueInvalid and PropertyValueRequired.
  3. On the Application_Start global.asax event set System.Web.Mvc.DefaultModelBinder.ResourceClassKey = "resource file name".
Tomas Aschan
  • 58,548
  • 56
  • 243
  • 402
Max Toro
  • 28,282
  • 11
  • 76
  • 114
9

Got It.

In ASP.NET MVC 2 RC, It is PropertyValueInvalid, not InvalidPropertyValue.

C.T.
  • 91
  • 1
  • 2
2

Try using: <%= Html.ValidationMessage("Price") %> without the star "*".

AH.
  • 2,913
  • 1
  • 28
  • 26
  • 1
    I consider this one the best approach. (+1). User messages belongs to Views, not to Controller. If in future you want to create the same page in another language, you will keep the same controllers and change ONLY the views. – ZĂ© Carlos Jul 07 '11 at 11:25
1

Cynthia, try to add this into your web.config

  <compilation debug="true" targetFramework="4.0">
      <buildProviders>
        <add extension=".resx" type="System.Web.Compilation.ResXBuildProvider"/>
        <add extension=".resources" type="System.Web.Compilation.ResourcesBuildProvider"/>
      </buildProviders>
  </compilation>

MVC calls httpContext.GetGlobalResourceObject(ResourceClassKey, "InvalidPropertyValue", CultureInfo.CurrentUICulture) to find the message, and sometimes you must add those providers to GetGlobalResourceObject find the correct resource

Davi Fiamenghi
  • 1,237
  • 12
  • 28