5

私はasp.netmvc3でかみそりのビューエンジンを使用しています。

DateTimeここで、値を固定形式で表示する必要があるaの入力が必要です(たとえばdd-MMM-yyyy)。だから私はできる:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MMM-yyyy}")]
public DateTime StartDate { get; set; }

そして、ビューで:

@Html.EditorFor(model => model.StartDate)

しかし、入力にクラスを追加する必要があります。では不可能だと思いますEditorFor。だから私は使うことができた

@Html.TextBoxFor(model => model.StartDate, new { @class = "Date" })

ただし、この場合、表示形式は機能しません。

Modelnullにすることができます。それで、

@Html.TextBox("StartDate", string.Format("{0:dd-MMM-yyyy}", Model.StartDate))

投げNullReferenceExceptionます。

4

2 に答える 2

9

オフィーリアの方法は私のより速いバージョンです。ただし、この方法は、アプリケーションにいくつかの日付フィールドがある場合に役立ちます。だからこれは私がそれをするのが好きな方法です:

->ソリューションエクスプローラーで、 Shared内にEditorTemplates」というフォルダーを作成します。

->そこに、新しい(強く型付けされていない)部分ビューを追加します。それを「DateTime」と呼んでください。

->このビューを開き、そこにあるコードをすべて削除して、次のコードをそこにスローします。

@model System.DateTime
    @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "date" /* + any other html attributes you want */ })

-> ViewModelでは、日付フィールドは次のようになります。

[Display(Name = "My Date:"), DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime MyDate { get; set; }

->メインビューEditorFor、および日付フィールドを使用する任意のビューで、次のようにプロパティで使用できます。

@Html.EditorFor(m => m.MyDate)

コントローラで日付フィールドを初期化するか、ビューモデルのコンストラクタでデフォルトの日付を設定できます。

于 2011-11-11T04:40:45.907 に答える
2

私はこれを使用し、それはうまく機能します:

    @Html.TextBox("ExpiryDate", String.Format("{0:ddd, dd MMM yyyy}", DateTime.Now), new { id = "expirydate" })

これがあなたが意味する/必要なものであることを願っています:)

于 2011-11-11T04:05:49.160 に答える