2012-03-06 12 views
3

私は、次のコードを持っていると私はそれに関連する3つの質問があります。パスの複数の値

JScriptのビューでは:テストコントローラで

$('#page1').load('@Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2 })'); 

アクション:

public ActionResult QuestionList(int testId, int Page) 
    { 
     // some meaningless operations here 
     return PartialView("QuestionList", somevalue); 
    } 

(部分図もQuestionListである - 私は念のために、別の名前で試してみました - そしてそれが再び動作しませんでした)

質問:

  1. testIdのみを使用する場合は問題ありません。これで、Pageを追加したので、Action paramter Pageは常にnullです。
  2. 2つの変数を置き換えるはずのモデルを作成しました。新しいモデルは常にnullです。
  3. 3番目の質問はタイトルに関連するのではなく、現在の問題です。ビューからUrl.Actionメソッドにどのように値を渡すことができますか?私はこのメソッドがサーバー側で、JScriptのビューがクライアント上にあることを知っていますが、この最後の問題を解決する必要があります。

私は既にこのようなスレッドをチェックしました:Pass multiple values from viewしかし、提案された解決策は実際に私の問題です。

ご協力いただきますようお願い申し上げます。

+0

ところで、ロード関数はajaxに基づいているので、ajaxタグは私の質問に有効です。 – Unknown

答えて

5

サーバーへの要求でクエリ文字列を調べて、エスケープされていないことを確認しようとしましたか?
それはエスケープなっていると思います私の

"/Tests/QuestionList?testId=1&Page=2" 

のようになります、

"/Tests/QuestionList?testId=1&Page=2" 

それが問題である場合は、@ Html.Raw()ヘルパーを使用しています。完全なソリューションについては、MVC3 Url.Action querystring generationを参照してください。

+0

実際には問題ですが、今ではそれを見ましたが、部分的な視点であるためリンクを簡単に見ることはできません。ありがとう、それは私にもっと多くの時間を費やすつもりでした。 – Unknown

0

まず、モデルをどのように渡しましたか?私はMVCContribグリッドを使用するとき、あなたのような問題を抱えていました。新しいオブジェクトをインスタンス化して列や注文などのデータを送信しようとしましたが、それはうまくいかなかったのです。 @Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2, options = new MVCContrib.Options() })のようなMVCContrib.Optionsオブジェクトを渡す代わりに、私はクラスプロパティの名前を@Url.Action("QuestionList", "Tests", new { testId = Model.Test.ID , Page = 2, Column="xxx", Order=Ascending })またはそのようなものを送信しなければなりませんでした。

また、リンクを正しく作成しているようです。その場合は、Pageの前に「@」を付けてください。多分予約語です。