0

DateTime プロパティを持つ単純なモデル クラスがあります。

    [Required]
    [DataType(DataType.DateTime)]
    public DateTime When { get; set; }

現在、Visual Studio Scaffolding はこれを生成します:

    <div class="form-group">
        @Html.LabelFor(model => model.When, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.When, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.When, "", new { @class = "text-danger" })
        </div>
    </div>

シンプルなテキストボックスです。デフォルトの足場をオーバーライドしたい。デフォルトのテンプレートに何かを追加すると、変更が生成されます。

ブートストラップdatetimepickerを生成するようにCreate.cs.t4ファイルを構成するにはどうすればよいですか?

これが列挙型であることを確認する if 条件があります

else if (property.IsEnum && !property.IsEnumFlags) 

またはブール型

bool isCheckbox = property.TypeName.Equals(boolType);

私の解決策は、if ステートメントを追加して日時かどうかを確認し、独自の入力フィールドを生成することです。ウェブをチェックしましたが、一般的なトピックではありません。

4

1 に答える 1

1

足場を変更したい場合は、これを行う必要があります。

bool isDateTime = property.TypeName.Equals("System.DateTime");

プロパティのデータ型を確認するには、TypeName を確認する必要があります。TypeName はデータ型の文字列値を取り、名前空間を含める必要があります。例System.Int32, System.DateTime,System.Bool

html タグを記述するか、独自の html ヘルパーを作成してから、次のようにすることができます。

<# if (isDateTime) {#>
        @Html.CutomeDateHelperFor(modelItem => <#= "item." + GetValueExpression(property) #>)
 <# } #>

足場のほかに、別の簡単な解決策はエディター テンプレートを使用することです。タイプのエディター テンプレートを作成するDateTimeと、すべてのエディターのタグが、Booststap の日付と時刻のピッカーまたは jquery ui カレンダーのようなものを含むカスタム html タグに変換されます。

例としてこれを参照してください: https://www.simple-talk.com/dotnet/asp.net/extending-editor-templates-for-asp.net-mvc/

于 2016-02-16T07:42:11.517 に答える