1

私はMVC 5 Viewで動作するようにフォーマットを取得する際に問題が発生しています。ビューはTextAreaForとしての足場でした。私はViewModelで自分のプロパティのDataFormattingを追加しましたが、実際には私のためにフォーマットされません。私が研究しているすべてのものから、私はViewModelを正しくフォーマットしていますが、実際にフォーマットが実際に動作していない理由を理解できませんでした。MVC 5 TextBoxFor、EditFor、およびTextAreaForの違いと混同していますか?

だから、@ Html.EditForを使ってみました。それは日付の書式設定を行うように思えましたが、ブートストラップの "フォームコントロール"クラスは適用されませんでした。その後、@ Html.TextBoxForを試して、@ Html.TextAreaForのように応答しました。フォーマットはしませんが、Bootstrapクラスが適用されました。

ビューを取得して日付をフォーマットするだけでなく、ブートストラップCSSを適用するには、どのものを使用する必要がありますか?

ここに私のViewModelプロパティがあります。

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

これは足場が作成された元のTextAreaです。フォーマットはしませんが、ブートストラップCSSが動作します。

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

これは、日付をフォーマットするEditForですが、ブートストラップCSSは適用されません。

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

これはTextAreaForのように応答したTextBoxForです。 HTMLを追加するには

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

答えて

3

あなたはMVC-5.1 +を使用している必要があり@Html.EditorFor()を使用して、属性、およびあなたがある場合は、その使用量は

@Html.EditorFor(m => m.CallDate, new { htmlAttributes = new { @class="form-control datepicker" }}) 

であるあなたはMVC-5.1 +を使用していない場合は、あなたがしたいですテキストボックスを生成しても日付値をフォーマットするために、次に使用量は@Html.TextAreaFor()がを生成すること

@Html.TextBoxFor(m => m.CallDate, "{0:d}", new { @class = "form-control datepicker" }) 

注意(第2パラメータは、フォーマット文字列である)であります複数行テキストの要素で、DateTimeプロパティには適切ではありません。

+0

ありがとうございます! MVC 5.1+の変更は、私の問題であるはずです。私は5.2.3にあり、CSSがEditForにどのように渡されたかに違いがあることを認識していませんでした。 – Caverman

+0

あなたはそれに 'asp.net-mvc-4'というタグをつけましたので、確信が持てません:) –

+0

彼らはasp.net-mvc-5を持っていません。私はまだ書式設定に問題がありますが、今回は電話番号に記載されています。私はポストを持っていますが、私はそれをやり直していますが、まだそれを稼働させることができていません。あなたにリンクを送ったりタグを付けたりすることができるので、あなたはそれを見渡して、私が間違っていることを判断できるかどうかを見ることができますか? – Caverman

関連する問題