DateTimeを使用する誕生日テキストフィールドに時刻が表示されないようにしようとしています
私のコード:(私はJqueryDatePickerを使用しています)
<label for="birthday">Birthday:</label>
@Html.TextBox("birthday", (Model.Birthday.ToString()), new { @class = "datePicker" })
Javascript:
$(document).ready(function () {
$('.datePicker').datepicker({ showOn: 'both', buttonImage: "/content/images/calendar-red.gif" });
});
日付のモデル設定があります:
[DataType(DataType.Date)]
public DateTime? Birthday { get; set; }
テキストボックスのテキストは表示されます:
「2010年8月21日12:00:00 AM」
テキストボックス内のテキストを次のように表示したい:
「2010年8月21日」
私はからすべてを試しました:
@inherits System.Web.Mvc.WebViewPage<System.DateTime>
私は@モデルを使用しているので、それをさせません
ビューモデルでエディターテンプレートとデータ注釈を使用して、ビューをよりクリーンにするフォーマットを指定します。
[DataType(DataType.Date)]
[DisplayName("Birthday:")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Birthday { get; set; }
そしてあなたのビューの内側:
<span class="datePicker">
@Html.LabelFor(x => x.Birthday)
@Html.EditorFor(x => x.Birthday)
</span>
次に、テキストボックスにdatePicker
クラスがなくなるため、セレクターを調整します。
$('.datePicker :text').datepicker({
showOn: 'both',
buttonImage: "/content/images/calendar-red.gif"
});
これに変更してみてください:
@Html.TextBox("birthday", (Model.Birthday.Value.ToShortDateString()), new { @class = "datePicker" })
DateTimeはNullable
なので、DateTime
メソッドにアクセスする前に.Value
を実行する必要があります。
ToString
でDateTime
を呼び出すと、日付と時刻が表示されます。したがって、ToString
を呼び出す代わりに、 ToString
with formating またはToShortDateString
のいずれかを使用します。
MSDNには、 ToShortDateString について次のように書かれています。
ToShortDateStringメソッドによって返される文字列は、カルチャに依存します。これは、現在のカルチャのDateTimeFormatInfoオブジェクトによって定義されたパターンを反映しています。たとえば、米国以外の文化の場合、標準の短い日付パターンは「M/d/yyyy」です。 de-DEカルチャの場合、「dd.MM.yyyy」です。 ja-JPカルチャの場合、「yyyy/M/d」です。特定のコンピューターの特定のフォーマット文字列は、標準の短い日付フォーマット文字列とは異なるようにカスタマイズすることもできます。
私は実際にMVC3を使用してRazorでこの問題に遭遇していました。必要な属性を取得するために、Shared/EditorTemplatesでDateTime部分クラスを作成する必要がありました。
以前の私の見解は@Html.TextBoxWithAttributesFor(m => m.To, new { @class = "text-box", @readonly = "readonly" })
でしたが、これは私にTimeStampを与え続けました。 .Value.DateTimeまたはその他の回避策を試した場合でも。しかし、私の現在の実用的な解決策は次のとおりです。
見る:
@Html.EditorFor(m => m.To)
部分クラス:
@model System.DateTime
@Html.TextBox("", (Model.ToShortDateString()), new { @class = "text-box", @readonly = "readonly" })
このページを2番目のソースとして使用しました: http://buildstarted.com/2010/09/10/overriding-displayfor-and-editorfor-to-create-custom-outputs-for-mvc/
「Model.Birthday.ToString()」がある場合は、「Model.Birthday.ToShortDateString()」に置き換える必要があります。