シナリオ:-MVC 4アプリケーションを開発しています。ウェブサイトは複数の言語で実行され、Azureでホストされます。ローカライズについては、リソースバンドルアプローチではなくデータベースに依存しています。
問題:-実行時にエラーメッセージをカスタマイズしたいのですが、データベースを介してメッセージをローカライズしたいのです。
リフレクションを使用して属性値を変更しようとしましたが、機能しませんでした。
コード:-
//Model
public class Home
{
[Required(ErrorMessage = "Hard coded error msg")]
public string LogoutLabel { get; set; }
}
//On controller
public ActionResult Index()
{
Home homeData = new Home();
foreach (PropertyInfo prop in homeData.GetType().GetProperties())
{
foreach (Attribute attribute in prop.GetCustomAttributes(false))
{
RequiredAttribute rerd = attribute as RequiredAttribute;
if (rerd != null)
{
rerd.ErrorMessage = "dynamic message";
}
}
}
return View(homeData);
}
クライアント側では、検証が行われると、古いメッセージ「ハードコードされたエラーメッセージ」が表示されます。リソースバンドルアプローチを使用したくない場合は、これをどのようにカスタマイズできるかを提案してください