MVC剃刀では、このようにデータベースに現在の日付を入れています。
model.Returndate = DateTime.Now.Date.ToShortDateString();
データベースフィールドは日時データ型であり、現在の日付を文字列形式に変換しているため、これは機能しません。 mm/dd/yyyy hh:mm:ss時刻形式ではなく、mm/dd/yyyy形式で日付を取得するため、文字列形式を使用しています。
編集:
コントローラーには
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
パーシャルビューでは、私は持っています
@Html.EditorFor(model => model.Returndate)
これは、日付と日付を一緒に表示する場所です...日付だけを表示したいです。時間ではありません。この編集がよりよく説明されることを願っています。
列タイプがSQLのDateTimeである場合、1を渡すかどうかの時間を格納します。
日付を適切に保存することをお勧めします。
model.ReturnDate = DateTime.Now;
次に、表示する必要があるときにフォーマットします。
@Html.Label(Model.ReturnDate.ToShortDateString())
または、EditorForを使用している場合:
@Html.EditorFor(model => model.ReturnDate.ToShortDateString())
または
@Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy"))
モデルにプロパティを追加するには、次のコードを追加します。
public string ReturnDateForDisplay
{
get
{
return this.ReturnDate.ToString("d");
}
}
次に、PartialViewで:
@Html.EditorFor(model => model.ReturnDateForDisplay)
編集:
こんにちは、この答えを明確にしたいのは、「EditorForを使用している場合」ということで、表現しようとしている値のタイプにEditorForテンプレートが必要だということです。
エディターテンプレートは、MVCで繰り返し制御を管理するクールな方法です。
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
上記で行ったように、Stringのような単純なタイプに使用できます。しかし、より複雑なデータ型の入力フィールドのセットをテンプレート化するのに特に便利です。
自分でこのシナリオに対処しなければなりませんでした-これを行うための本当に簡単な方法が見つかりました。モデルのプロパティに次のように注釈を付けるだけです:
[DataType(DataType.Date)]
public DateTime? SomeDateProperty { get; set; }
日付ピッカーから時間ボタンも非表示になります。
この回答が少し遅れてすみません;)
これは、TextBoxに表示する場合に機能します。
@Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}")
データベースの日付/時刻はformattedバージョンではありません。日付/時刻そのものになります。データベースから値を抽出するときにその日付/時刻を表示する方法の表示方法は別の問題です。私はあなたが本当にただ欲しいと強く疑います:
model.Returndate = DateTime.Now.Date;
または多分
model.Returndate = DateTime.UtcNow.Date;
はい、SQL Server Studioなどを使用してデータベースを見ると、真夜中が表示されます-しかし、それは無関係であり、データベースから日付をフェッチしてユーザーに表示すると、then関連する形式を適用できます。
編集:編集した質問に関して、問題はモデルにあるのではなく、ビューの指定方法にあります。次のようなものを使用する必要があります。
@Html.EditorFor(model => model.Returndate.Date.ToString("d"))
ここでd
は、短い日付パターンの 標準の日付と時刻のフォーマット指定子 です(つまり、現在の文化的設定が考慮されます)。
それは私が繰り返し言ってきたビットです-あなたがユーザーに日付/時刻を表示するとき、それは日付なしで日付としてフォーマットする時間です時間。
編集:これが機能しない場合は、モデルまたはビューをフォーマット文字列で装飾する方法などが必要です。私は実際にはMVCの人ではありませんが、宣言的にこれを行うための良い方法になるようにoughtのように感じています...
以下のようにViewModelを変更できます。
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}",ApplyFormatInEditMode = true)]
Razorではわかりませんが、ASPXでは次のことを行います。
<%if (item.Modify_Date != null)
{%>
<%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%>
<%} %>
Razorにも同様のものが必要です。これが誰かの助けになることを願っています。
以下のようなforループがある場合。
@ item.StartDateを@ item.StartDate.Value.ToShortDateString()に変更します
これにより、私の場合のようにモデル内のプロパティに注釈を付けられない場合に備えて、時間が削除されます。
<table>
<tr>
<th>Type</th>
<th>Start Date</th>
</tr>
@foreach (var item in Model.TestList) {
<tr>
<td>@item.TypeName</td>
<td>@item.StartDate.Value.ToShortDateString()</td>
</tr>
}
</table>
単純に日時を変換できます。何かのようなもの:
@Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.Returndate))
このページの他のソリューションに問題があったので、これをドロップすると思いました。
@Html.TextBoxFor(m => m.EndDate, "{0:d}", new { @class = "form-control datepicker" })
したがって、2番目のパラメーターに「{0:d}」を追加するだけで、準備完了です。