1

ASP.NET MVCアプリで、UIに日付部分だけを表示するように表示しようとしています。model.SomeDateはDateTime値です。

私は次のことを試しました:

<%= Html.TextBoxFor( model => model.SomeDate, new { @Value = Model.SomeDate.ToShortDateString() } )%>

ただし、コンパイルされません。エラーは次 のとおりです。System.Nullableには、「ToShortDateString」の定義が含まれておらず、拡張メソッドも含まれていません。

UIで動作させるにはどうすればよいですか?

4

2 に答える 2

1

使用する

(Model.SomeDate.HasValue)?Model.SomeDate.Value.ToShortDateString():""

それ以外の

Model.SomeDate.ToShortDateString()

すなわち:

<%= Html.TextBoxFor( model => 
     model.SomeDate, new { 
     @Value = Model.SomeDate.Value.ToShortDateString() 
   })
%>
于 2012-07-12T21:31:22.563 に答える
0

エディター テンプレートを使用できます。

ビューモデルで:

[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime? SomeDate { get; set; }

そしてあなたの見解では:

<%= Html.EditorFor(x => x.SomeDate) %>

また、何らかの理由で、このアプリケーションを設計した人がビュー モデルを使用せず、ドメイン モデルをビューに直接渡すことを決定し、それらのドメイン モデルを変更できない場合は、ビューでこれを行うことができます。

<%= Html.EditorFor(x => x.SomeDate, "ShortDate") %>

次に、カスタム エディター テンプレートを定義します ( ~/Views/Shared/EditorTemplates/ShortDate.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>
<%= Html.TextBox(
    "", 
    Model.HasValue ? Model.Value.ToString("d") : "",
    new { @class = "text-box single-line" }
) %>
于 2012-07-12T21:39:07.143 に答える