2016-06-16 10 views
0

ビューには、モデルのDateTimeフィールドに関連付けられたDisplayForがあります。フィールドを更新するために、AJAX呼び出しは日付を返します。 AJAXの日付をMM/DD/YYYYの値に変換できますが、DisplayForを.valで設定してもビューは更新されません。 Chromeデベロッパーツールにエラーは表示されず、実際には変換された正しいDateTimeが表示されますが、DisplayForは更新されません。私は.valの代わりに.attrを変更しようとしていませんでした。なぜなら.valは正しいオプションになるからです。ビューが更新されない理由を誰でも見ることができますか?前もって感謝します!AJAXの結果を表示するDisplayForを更新する

モデル宣言:

DateTime? SaleDate { get; set; } 

ビューでDisplayFor:成功AJAX呼び出しの内部

@Html.LabelFor(m => m.SaleDate, "Sale Date") 
@Html.DisplayFor(m => m.SaleDate, "{0:d}", new { @class = "form-control" }) 

更新スクリプト:

success: function (data) { 
    var $sDate = $("#SaleDate"); 
    var pattern = /Date\(([^)]+)\)/; 
    var results = pattern.exec(data[0].SaleDate); 
    var dt = new Date(parseFloat(results[1])); 
    $sDate.val(dt); //dt is correct Date, but DisplayFor isn't updating! 
} 

EDIT

ページソースは、IDが正しいことを示していますが、入力はありません。私はこれがDisplayFor対TextBoxForのためであると仮定しますが、idの明らかな欠如が問題である可能性がありますか?

<label for="SaleDate">Sale Date</label> 
6/1/2016 12:00:00 AM//no input section, just the DateTime value 

あるいは、SaleDateがnullの場合:

<label for="SaleDate">Sale Date</label> 
//no value or input section 
+0

このルビーはレールですか? – marcusshep

+0

いいえ、ビュー側のブートストラップでモデルとコントローラ側のC#です。 – jle

+1

生成されたHTMLコードをブラウザで確認して、 'DisplayFor'入力に' SaleDate'というIDがあることを確認してください。 –

答えて

1

ビューでカミソリのコードは、いくつかのHTMLコードを生成します。 Javascriptはクライアント側で動作し、Razorの@Html.DisplayForについてはその出力についてのみ考えていません。私はRazorで強くないので、私のオファーにはエラーが含まれている可能性があります。

JSは同じままです。コン:これは編集可能なテキストボックス(入力)
2. <span id="SaleDate" class="form-control">@Html.DisplayFor(m => m.SaleDate, "{0:d}")</span>
JSある最後の行は、私はそれが役に立てば幸い$sDate.html(dt);

でなければなりません。

関連する問題