2010-12-27 7 views
4

jQueryを使用してMVCアプリケーションでアクションメソッドを呼び出そうとしています。基本的には、いくつかの入力フィールドの値を取得し、ボタンをクリックして入力フィールドの値をパラメータとして渡すことでアクションメソッドを呼び出すことが基本です。しかし、私は "年"パラメータではなく、 "数値"パラメータの値を取得するだけです。jQueryを使用してMVCでアクションメソッドを呼び出すとパラメータが機能しない

function selectWeek() { 
     $('#selectWeekButton').click(function (event) { 
      var number = $("#selectWeekId").val(); 
      var year = $("#selectYearId").val(); 
      var actionUrl = '<%: Url.Action("Edit", new { number="WEEKPLACEHOLDER", year="YEARPLACEHOLDER" }) %>' 

      var yearUrl = actionUrl.replace('YEARPLACEHOLDER', year); 

      var url = yearUrl.replace('WEEKPLACEHOLDER', number); 
      alert(url); 
      $.get(url, function (data) { 
       alert('Test'); 
      }); 
     }); 
    } 

私は、アラートでURLを確認しました。ご覧のとおり、両方の値が正しく表示されているようです。しかし、私がアクションメソッドでyearパラメータの値をチェックするとnullになります。私は、これは単なる結合フィールドの代わりに行うために奇妙なことのように見えることを知っている

public ActionResult Edit(string number, string year) 
//etc... 

、しかし:

<span>Vecka: </span> 
     <input type="text" id="selectWeekId" /> 
     <span>År: </span> 
     <input type="text" id="selectYearId" /> 
     <input type="button" value="Välj vecka" id="selectWeekButton" /> 

とアクションメソッドの始まり:ここ

は、入力フィールドですその理由は、これらの入力フィールドとその値がこのビューの主な目的ではないためです。彼らはこのタイムシートアプリケーションで別の週を選択するだけです。また、入力フィールドを最終的にjQueryカレンダーに置き換える予定なので、このようなことをやる必要があります。

これを行う最も簡単な方法は何ですか、なぜそれがそのまま動作しないのですか?

+0

わからないが、私はそのルーティングの問題を考えます。 –

答えて

6

はこのようにしてみてください:ここで、ポスト(のasp.net MVC 1が、まだ有効例)である

var number = $('#selectWeekId').val(); 
var year = $('#selectYearId').val(); 
var url = '<%: Url.Action("Edit") %>'; 
$.get(url, { number: number, year: year }, function (data) { 
    alert('Test'); 
}); 
+0

良い例。残念ながら、rcravensはあなたにそれを打ち負かしました、同じアイデア:-pしかし、とにかくおかげさまでした! – Anders