ASP .NET MVC 5.1でアプリケーションを記述します
私にはフィールドがあります:
[DisplayName("Date of Birth")]
[DataType(DataType.Date)]
public DateTime BirthDate { get; set; }
そして、ビューで
<div class="form-group">
@Html.LabelFor(model => model.BirthDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.BirthDate, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.BirthDate, "", new { @class = "text-danger" })
</div>
</div>
次のように変換されます:
モデルのプロパティの上の注釈を次のように変更した場合:
[DisplayName("Date of Birth")]
[DataType(DataType.DateTime)]
ピッカーが表示されません。それらを次のように変更した場合:
[DisplayName("Date of Birth")]
[DataType(DataType.Time)]
選択できるのはhh:mmのみです。
質問: ASP .NET MVC 5.1で日付ピッカーの代わりに日付時刻ピッカーを表示します。ASP .NET 5.1 HTML 5つの特定のソリューション。
あなたの要件はかなりですpicky ...
フィールドに属性Datatype
を指定すると、input
として指定された属性を持つtype
が生成されます。 [DataType(DataType.Date)]
を追加すると、生成される入力は日付ピッカーになりますが、[DataType(DataType.DateTime)]
を追加すると、入力はdatetime
型になります。ピッカーを表示しないでください。どうして?数年前、入力datetime
をサポートするブラウザがサポートを停止することを決定し、W3Cは実装の不足によりこの機能を削除したためです。
ただし、少し前までは、一部のブラウザベンダーがドラフトに戻ったdatetime-local
のサポートを再開しました。現在、Chrome
、Opera
、およびMicrosoft Edge
の最新バージョンがサポートしています。
1つの解決策は、BootStrapまたはAjay Kumarが提案したjQuery Datetime Pickerを使用することです。
もう1つは、サポートするブラウザーが少ないことを気にしない場合は、datetime-local
を使用することです。たとえばこのように:
@Html.TextBoxFor(model => model.BirthDate, new { type = "datetime-local"})
Html5とhtml5をサポートするブラウザーのために、この日付ピッカーを取得しています。可能なオプション:
私のソリューションはわずかに異なっていました。ただし、javascript/jQueryを使用して実行します。データ注釈を使用する場合は、ファクトを使用しました
_[Display(Name = "The Display Name")DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yy H:mm:ss tt}"), DataType(DataType.DateTime)]
public DateTime DateTimeFieldName { get; set; }
_
ここで、ページ(またはバンドル)にjqueryUIスクリプトとCSSを含める必要があります。 Javascriptの場合:
_$(function () {//DOM ready code
// Get data-annotations that are Marked DataType.DateTime and make them jquery date time pickers
$('input[type=datetime]').datetimepicker({ dateFormat: 'yy-mm-dd', timeFormat: 'hh:mm', changeMonth: true, changeYear: true, showAnim: 'slideDown' });
});// END DOM Ready
_
DataType(DataType.DateTime)
は型がdatetimeの入力を行うためです。その事実を使用して、それらすべてを取得し、jQueryを使用して日付ピッカーにします。 __Layout
_ページバンドルに含まれているこのコードがあります。
そのため、モデルのプロパティに注釈を付けるだけで、jQueryの日付時刻ピッカーとして表示されます。日時ピッカーのデフォルトを変更することができます。これが誰かを助けることを願っています。
オブジェクト定義に追加します。
public class EditViewModel
{
public string Id { get; set; }
[Display(Name = "Username")]
public string UserName { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-ddThh:mm:ss}")]
[Display(Name = "Registed Date")]
public DateTime RegistedDate { get; set; }
}
.cshtmlに以下を追加:
<div class="form-group">
@Html.LabelFor(m => m.RegistedDate, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.RegistedDate, "{0:yyyy-MM-ddThh:mm:ss}", new { @class = "form-control", type = "datetime-local" })
@Html.ValidationMessageFor(m => m.RegistedDate, "", new { @class = "text-danger" })
</div>
</div>