2011-01-13 18 views
4

jQueryのdatepickerを使用しています。一度選択すると、9Feb、11として表示させたいのですが、保存するときは2/9/11に変換します。どうやってやるの?DatePickerの形式

dteを再表示すると、9Feb、11が再度表示されます。どうやってやるの?次のように

コードの私の作品は、次のとおりです。

@Html.TextBoxFor(m => (Model.dDay.Date)) 

$("#dDay_Date").datepicker({ dateFormat: 'dd-M-yy' }); 

答えて

3

'altField'オプションを使用すると、フォームの非表示フィールドにデータを入力できます。日付フィールドを非表示に変更するだけです:<input type="hidden" name="date" id="date" value=""/>。 altフィールドの書式も 'altFormat'で設定します:

$("#date_display").datepicker({ 
    dateFormat: 'd M y', 
    altField: '#date', 
    altFormat: 'dd-M-yy' 
}); 
0

あなたがページに非表示の入力フィールドを追加することができます。 altFieldおよびaltFormatオプションを使用すると、データを別の形式でページに送信できます。

これを行うには、DateTime形式のカスタムエディタテンプレートを作成します。 DateTime.cshtmlファイルをViews/Shared/EditorTemplatesフォルダに追加します。あなたは、この(テストしていない)のような内容を使用することができます

:次に、あなただけTextBoxForを使用する必要が

@model DateTime? 
@using System.Globalization 
@{ 
    var name = MvcHtmlString.Create(ViewData.TemplateInfo.GetFullHtmlFieldName("")); 
    var id = MvcHtmlString.Create(ViewData.TemplateInfo.GetFullHtmlFieldId("")); 
    var visibleID = id + "_editor"; 

    var value = Model ?? DateTime.Today; 
    var formattedValue = value.ToString("dd MMM yyyy"); 

} 
<input type="text" id="@(visibleID)" value="@formattedValue" /> 
<input type="hidden" id="@(id)" name="@(name)" value="@value.ToString("yyyy/MM/dd")" /> 
<script type='text/javascript'> 
    $(function() { $('#@(visibleID)').datepicker({ dateFormat: 'd mm y', altField='@id', altFormat='d/m/y' }); }); 
</script> 

を、任意のDateTimeフィールドは、DateTimePickerのが有効になります。

+0

上記を行うのが簡単で清潔な方法はありますか? – learning

+0

DateTime.cshtmlは一度だけ追加します。あなたのページではTextBoxForを使うだけです。どのようにきれいにすることができますか? – GvS

+0

さて、私はそれを理解しませんでした。ヘルパーですか? – learning