0

EditorTemplatesには、DateTime.cshtmlがあります。これはcreate / edit/updateビューで機能します。

@model Nullable<System.DateTime> 

@if ( Model.HasValue ) { 
   @Html.TextBox( "" , String.Format( "{0:dd/MM/yyyy}" , Model.Value ) , new  { @class = "datepicker span2" } ) 
} 
else { 
   @Html.TextBox( "" , String.Format( "{0:dd/MM/yyyy}" , DateTime.Now ) , new { @class = "datepicker span2" } ) 
} 

検索ビューを作成するときに、日時ピッカーも使用したいのですが、モデルにリンクされておらず、単なるHTMLである場合、上記のコードを使用してビューをコーディングするにはどうすればよいですか?

Razorマークアップに次のように入力した場合:

@using (Html.BeginForm())
{
    <p>
        Availability between: @Html.TextBox( "From" , String.Format( "{0:dd/MM/yyyy}") , new  { @class = "datepicker span2" } ) 
                         and: @Html.TextBox( "To" , String.Format( "{0:dd/MM/yyyy}") , new  { @class = "datepicker span2" } )
        <input type="submit" value="Search" /></p>
}

エラーが発生します:

{"Index (zero based) must be greater than or equal to zero and less than the size of the argument list."}

助けてくれてありがとう、

マーク

4

2 に答える 2

1

DateTime-にaを指定していませんString.Format。そのため、このエラーが発生します。1つのパラメーターが必要ですが、パラメーターを指定していません。使ってみてくださいDateTime.Now

例えば

@Html.TextBox( "From" , String.Format( "{0:dd/MM/yyyy}", DateTime.Now ), 
new  { @class = "datepicker span2" } ) 

DateTimeまたは、 ViewModelに2つのプロパティを追加し、それらのプロパティでEditorForヘルパーを使用します。

于 2012-07-02T00:06:05.010 に答える
0

TextBoxメインビュー内では使用しないでください。カスタムエディタテンプレートをレンダリングする場合は、EditorForヘルパーを使用する必要があります。

@using (Html.BeginForm())
{
    <p>
        Availability between: 
        @Html.EditorFor(x => x.From)
        and: 
        @Html.EditorFor(x => x.To)

        <input type="submit" value="Search" />
    </p>
}

FromおよびToプロパティのタイプがの場合、DateTimeASP.NET MVCはカスタムエディターテンプレートを自動でレンダリングします(~/Views/Shared/EditorTemplates/DateTime.cshtml)。

于 2012-07-02T06:05:13.827 に答える