2011-07-10 18 views
1

上のonChangeのための非常に奇妙なイベントの動作は私のスクリプトで始まる、(私だけ起動する関連する部分が含まれるようにするよ)私のコード、開始しました:Telerik MVC日付ピッカー

@Html.Telerik().DatePickerFor(model => model.RaceDate).ClientEvents(events => events.OnChange("RaceDate_onChange")) 

そして最後に受信アクションのビット:

[HttpGet] 
public ActionResult Details(int year, int month, int day) 
{ 
    var viewModel = new RaceCardModel {Metadata = DetailModelMetadata.Display, RaceDate = new DateTime(year, month, day)}; 

私はの選択を取得しようとしていますフォームを送信せずにページをリフレッシュするために、GETをトリガーする新しい日付。 Detailsアクション、day値にGETリクエストで

は常に日付ピッカーの背後に一日である:これはこの問題を除いて、正常に動作します。例えば。最初の値はビューモデルプロパティから設定され、ビューがレンダリングされると3となります。次に、14をクリックして、アクションメソッドでブレークポイントを押します。私は29をクリックして、ブレークポイントにヒットするとday値は3で、day値は14

間違っているものを尋ねる以外にもあり、私は自由を取るだろうし、これ以上である、より良い方法があるかどうか尋ねます複雑です。私はかなり初心者であり、むしろ接線や細部にうんざりしているよりもリビジョンを必要とする作業コードを提供するでしょう。

+0

あなたはそれを送信する前に現在の日付を警告する場合どうなりますか?これを試してください:alert(pickedDate);アラート(pickedDate.getDate()); –

+0

@Atanas、私は7月11日に始まり、7月13日をクリックします。両方の警告が私に11を与えます。Telerikにログする何か? – ProfK

答えて

2

はe.value代わりclient-side events例に示すように使用してみてください:のURLを扱うときは、必ずURLヘルパーを使用します。 Value()メソッドがOnChangeイベント中に前の値を返した古いバージョンを使用している可能性があります。

UPDATE:

"e.value" のOnChange引数の値フィールドを意味します

function onChange(e) { 
    var date = e.value; // instead of datePicker.value() 
} 
+0

ラムダ構文を使った剃刀の例は見当たりません。ここで助けてくれませんか? – ProfK

+0

なぜひげ剃りの構文で例が必要ですか?コードはまったく同じです。単にイベント引数の値フィールドを使用します。関数(e){var値= e.value; } –

+0

私は、lambaの構文を働かせるために何度か試してみて、イベントのための単純な関数名の引数を取得することを管理していました。 – ProfK

0

限り、あなたが取得している1ヶ月の差として、それは正常だし、それはgetMonth()方法はDateインスタンス上のJavaScriptでどのように動作するかです:

getMonthによって返される値は0〜 整数であります11. 0 は1月、1月〜2月、 などに対応します。

+1を追加することは、状況に正しく対処する正しい方法です。

あなたのAJAX呼び出しについてちょっとした発言:決してハードコードURLはありません。

var year = pickedDate.getFullYear(); 
var month = pickedDate.getMonth() + 1; 
var day = pickedDate.getDate(); 
var url = '@Url.Action("Details", "RaceCard")'; 
$.get(url, { year: year, month: month, day: day }, function(result) { 
    // process the results of the AJAX call 
}); 
+0

x = 1/0は、ChromeでJSデバッガを停止させようとしたときに残したoopsieでした。しかし、あなたはその日について私を誤解しています。私が得ている価値は、私が期待しているときよりも1つだけ少ないわけではありません。 偶数が発生すると、新しい日の値が選択される前にピッカーにあった曜日の値が渡されます。私はこの例でそれを明確にするように努力しましたが、今では私の例が単純なオフ・バイ・ワンの問題を示している可能性を排除しました。 – ProfK

+0

@ Proff、あなたはおそらく、この 'RaceDate_onChange'メソッドを適切なタイミングで呼び出すことはありません。実際の値が変更される前に呼び出されたようです。この「RaceDate_onChange」メソッドを登録した方法と場所を表示していないので、私があなたをさらに助けることはできません。 –

+0

私のコードは、コントロールの名前の変更を除いて、 "OnChangeイベントの購読"のTelerikドキュメントから貼り付けられたコピーです。私は圧縮されたサンプルコードを作成しようとしています。 – ProfK