1

DateTime 値を保持する入力コントロールをレンダリングしています。

[DataType(DataType.Date)]
public DateTime? ScheduledDateTime { get; set; }

入力に適用されるフォーマットは、実行時にデータベースから取得されるユーザー設定として保存されます。

したがって、実行時に次の値が得られます。

YYYY-MM-DD

実際のフォーマットに関係なく、指定されたように DateTime をフォーマットするようにモデル バインダーに指示するにはどうすればよいですか? 私が見つけたすべての例は DateFormatString 属性の設定に依存していますが、これはコンパイル時の定数でのみ設定できます。これにより、私の目的には使用できなくなります。

デフォルトのモデル バインダーをオーバーライドするものはありますか? 誰もが例を手に入れましたが、私はグーグルを立ち上げることができませんでした。

編集:実行時に変換を処理する新しい HtmlHelper を作成することもできますか?

EDIT2:私はこのようにそれについて行くつもりです。過度に冗長な命名規則をご容赦ください。

<%= Html.TextBoxFor(model => model.ScheduledDateTime, string.Format("{0:" + User.GetDateFormatStringAsCSharpFormat(SessionManager.Default.User.DateFormat)+ "}", Model.ScheduledDateTime))%>
4

1 に答える 1

3

これは Razor 構文を使用しますが、同じ原則が適用されます

@{
  var dateFormat = (DateTime)Viewbag.PreferredDateFormatForUser //Just grab it from where ever you have it
}


@Html.TextBox("ScheduleDateTime", model.ScheduleDateTime.ToString(dateFormat))

カスタム日時フォーマット文字列のリファレンスは次のとおりです。

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2013-08-29T23:19:34.613 に答える