2011-06-30 27 views
1

私はRazorとEntityFrameworkでMVC3を使用しています。イベントスケジューリングを処理するために、私はStartDate、StartTime、EndDate、EndTimeをjquery datepickerとtimepickerを使用しています。 ViewModelでDisplayFormatAttributeを使用しようとしていますが、TextboxはDateTime文字列全体を表示し続けます。私のviewmodelでDisplayFormatAttributeが機能しない

私は、次の特性があります。

[DisplayFormatAttribute(DataFormatString = "{0:mm/dd/yyyy}")] 
    public DateTime StartDate { get; set; } 

    [DisplayFormatAttribute(DataFormatString = "{0:h:mm tt}")] 
    public DateTime StartTime { get; set; } 

をそして、私のビューは次のようになります。

<div id="event-datetime-range" style="display:inline"> 
     <span id="event-startdatetime"> 
      @Html.TextBoxFor(model => model.StartDate, new { placeholder = "Start Date", id = "event-start-date", @class = "event-datepicker" }); 

      <span class="event-timerange">at</span> 
      @Html.TextBoxFor(model => model.StartTime, new { placeholder = "Time", id = "event-start-time", @class = "event-timepicker event-timerange" }) 
     </span> 

誰もが私が間違っているのを教えていただけますか?前もって感謝します!

答えて

3

DisplayFormat属性はHtml.DisplayFor()メソッドで使用するためのものであり、Html.TextBoxForでは使用できません。日付形式を表示するには、EditorTemplateというカスタムを使用することをお勧めします。または、jQueryを使用します。

+0

私はそれらを作成することに関するブログの投稿があります:http://buildstarted.com/2010/09/10/overriding-displayfor-and-editorfor-to-create-custom-outputs-for-mvc/ – Buildstarted

+0

私はこのブログに出くわしましたこのメソッドを長期的に検討していましたが、私はMVCとRazorの経験にわずか1週間しかないのでエディタテンプレートを作成するのが不愉快でした。 Html.DisplayFor()はうまくいきました。私は最終的にはテンプレートを使用しますが、今のところ、柔軟性を持ち、jQueryを使用しようとします。返信していただきありがとうございました。 – BornReady

1

JQueryの日付ピッカーを使用している場合は、コントロールを作成するときにdateFormatオプションを使用します。日付/時刻の形式に "mm" でまた

jquery datepicker

は、 "MM" は月である分です。

また[DisplayFormat(DisplayFormatString={"0:d})]を使用してみてください代わりに@Html.TextBoxFor()

+0

dateFormatオプションは、ビューが新規または編集用であるため、モデルの初期値には影響しません。 dateFormattingのタイプミスもありがとう。 – BornReady

+0

また、私は運がHtml.EditorForにFormatAttributesで切り替わっていないので、ビューを実行しているインスタンスでdatepickerが開始されていないように見えます。今では、デフォルトでは、単にBuildStartedのようなjQueryに設定する必要があるという意味のテキストボックスをクリアすることが推奨されています。 – BornReady

0

@Html.EditorFor()をしようとする場合があります。