13

DateTime を使用する誕生日テキスト フィールドに時刻が表示されないようにしようとしています。

私のコード:(私はJquery DatePickerを使用しています)

<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>

しかし、私はモデルを使用しているので、それをさせません

4

4 に答える 4

16

ビューモデルでエディターテンプレートとデータ注釈を使用して、ビューをよりクリーンにするフォーマットを指定します。

[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" 
});
于 2011-02-12T10:48:04.803 に答える
2

これに変更してみてください:

@Html.TextBox("birthday", (Model.Birthday.Value.ToShortDateString()), new { @class = "datePicker" })

DateTime はメソッドにアクセスする前Nullableに行う必要があるためです。.ValueDateTime

電話をかけるToStringと、DateTime日付と時刻が表示されます。したがって、呼び出す代わりにToStringToStringフォーマットまたはToShortDateString.

MSDN はToShortDateStringについて次のように述べています。

ToShortDateString メソッドによって返される文字列は、カルチャに依存します。これは、現在のカルチャの DateTimeFormatInfo オブジェクトによって定義されたパターンを反映しています。たとえば、en-US カルチャの場合、標準の短い日付パターンは "M/d/yyyy" です。de-DE カルチャの場合は「dd.MM.yyyy」です。ja-JP カルチャの場合は、"yyyy/M/d" です。特定のコンピュータの特定の書式文字列は、標準の短い日付書式文字列とは異なるようにカスタマイズすることもできます。

于 2011-02-12T10:42:01.850 に答える
1

私は実際にMVC3を使用してRazorでこの問題に遭遇していました。必要な属性を取得するために、Shared/EditorTemplatesでDateTime部分クラスを作成する必要がありました。
以前の私の見解は次のとおりでした:@Html.TextBoxWithAttributesFor(m => m.To, new { @class = "text-box", @readonly = "readonly" })しかし、これは私にタイムスタンプを与え続けました。.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/

于 2012-01-27T22:53:27.910 に答える
0

「Model.Birthday.ToString()」がある場合は、「Model.Birthday.ToShortDateString()」に置き換える必要があります。

于 2011-02-12T10:43:55.760 に答える