イラン、イスラエル、サウジアラビアなどの一部の国では、独自のカレンダーが使用されています。たとえば、グレゴリオ暦の日付 " 2012-12-11 " は、イラン暦では " 1391-09-21 " です。多くの理由 (データベース機能など) から、日付変数をグレゴリオ日付形式でデータベースに格納することにしました。課題は、そのための UI を構築したいときに始まります。テンプレートを作成し、変数を適切な形式に変更するのはasp.net mvc
簡単です。DateTime
しかし問題は、返された値がモデル バインダーによって認識されないポスト バックmvc
にあります(月の日数がグレゴリオ暦の日付と等しくないことに注意してください)。これを修正する 1 つの方法は、次のように受信結果を解析することです。
[HttpPost]
public ActionResult Create(Content person,string customBirthdayDate)
{
person.Birthday = CustomDateTimeHelper.Parse(customBirthdayDate);
Service.Save(person);
return RedirectToAction("List");
}
これはうまくいきますが、より良い解決策を探しています。アイデアは、モデルを次のように変更することでした。
public class Person
{
public int Id{set;get;}
public string Name{set;get;}
public DateTime Birthday{set;get;}
public string CustomBirthdayDate
{
set{Birthday = CustomDateTimeHelper.Parse(value);}
get{return CustomDateTimeHelper.ConvertToCustomDate(Birthday); }
}
}
このアプローチでは、コントローラー アクションに追加のコードを記述する必要はありません。より良いアイデアはありますか?? ありがとうございました。