2011-06-02 12 views
0

でそれにナビゲートするのではなく、aspxページをダウンロードします。しかし、私は働いているいくつかのコードから奇妙な結果を得ています。私はMVC 2アプリケーションでjqGridを動作させようとしています。は、なぜ私はこれが今までここでスタックオーバーフローの上、おそらく非常識な質問であるだけでMVC 2

マイホームコントローラは、インデックスのためのアクションメソッドを持っており、GridData ... GridDataは4つのパラメータを取り、私は彼らに1の値を持つdefalutValue属性を追加しますので、それらの2はnullにすることはできません。インデックスコントローラはGridDataビューを開きます...私は、この関数でビューを返しませんが、私はJSON変数を返す...ここ

[Authorize(Roles="testRole")] 
    public ActionResult Index(string nextButton) 
    { 
     ViewData["identity_Name"] = identity.Name; 
     if (nextButton != null) 
      return RedirectToAction("GridData"); 
     return View("Index"); 
    } 

    public ViewResult windowsID() 
    { 
     return View(); 
    } 

    public ActionResult GridData(string sidx, string sord, [DefaultValue(1)] int page, [DefaultValue(1)] int rows) 
    { 
     var jsonData = new 
     { 
      total = 1, // we'll implement later 
      page = page, 
      records = 3, // implement later 
      rows = new[]  
      { 
       new {id = 1, cell = new[] {"1", "-7", "Is this a good question?"}}, 
       new {id = 2, cell = new[] {"2", "15", "Is this a blatant ripoff?"}}, 
       new {id = 3, cell = new[] {"3", "23", "Why is the sky blue?"}} 
      } 
     }; 
     return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 
} 

は私の最もあり、その後GridDataアクションメソッドにWICHリダイレクトJavascriptコード。

<script type="text/javascript"> 
jQuery(document).ready(function() { 
    jQuery("#list").jqGrid({ 
     url: '/Home/GridData/', 
     datatype: 'json', 
     mtype: 'GET', 
     colNames: ['Id', 'Votes', 'Title'], 
     colModel: [ 
     { name: 'Id', index: 'Id', width: 40, align: 'left' }, 
     { name: 'Votes', index: 'Votes', width: 40, align: 'left' }, 
     { name: 'Title', index: 'Title', width: 200, align: 'left'}], 
     pager: jQuery('#pager'), 
     rowNum: 10, 
     rowList: [5, 10, 20, 50], 
     sortname: 'Id', 
     sortorder: "desc", 
     viewrecords: true, 
     imgpath: '/scripts/themes/smoothness/images', 
     caption: 'My first grid' 
    }); 
}); 

合理的な権利ですか?なぜ、それをリダイレクトするのではなく、ダウンロードするのでしょうか?地球上で私はここで間違っている可能性があります。まあまあ私は思うが、私は単純なものを欠いていると思う。

答えて

0

私はそれを理解したと思う。私は行動にリダイレクトしたくない。アクションはJsonのデータ型を返します。これはテキストだけであり、ブラウザはダウンロードしようとしています。私はビューにリダイレクトしたいと思います...だから、私がしたことは、jsonデータを返すヘルパ関数を作成し、dataGridコントローラにリダイレクトすることです。しかし、Jsonスクリプトはヘルパー関数を呼び出すようになりました。それは...私が知っているJavascriptエラーを除いて解決する方法は基本的にフォーマットエラーです。それをクリックするとレンダリングされます。

とにかく助けてくれてありがとうみんな。

デレク

pここにあなたが同じ問題を抱えている場合は、自分自身のためにそれをチェックアウトしたかった包み私のコード化されたソリューションであるS ... jqGridコールここで

jQuery(document).ready(function() { 
    jQuery("#list").jqGrid({ 
     url: '/Home/GetData/', 
     datatype: 'json', 

は、コントローラ内部の私の行動です。

public JsonResult GetData(string sidx, string sord, [DefaultValue(1)] int page, [DefaultValue(3)] int row) 
    { 
     var jsonData = new 
     { 
      total = 1, // we'll implement later 
      page = page, 
      records = 3, // implement later 
      rows = new[]  
      { 
       new {id = 1, cell = new[] {"1", "-7", "Is this a good question?"}}, 
       new {id = 2, cell = new[] {"2", "15", "Is this a blatant ripoff?"}}, 
       new {id = 3, cell = new[] {"3", "23", "Why is the sky blue?"}} 
      } 
     }; 
     return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 

    public ActionResult GridData() 
    { 
     return View("GridData"); 
    } 

私はgriddataビューを呼び出しGridData()、にリダイレクトした後、あなたが見ることができるように、jqGridは、その後のGetData()を呼び出します。 GetDataはビューにレンダリングされるJsonデータを返します。

誰かがこれを行うより良い方法があれば、返信してください。しかし、助けてくれてありがとう。

デレク

0

私はあなたの問題はここにある数える:

if (nextButton != null) 
      return RedirectToAction("GridData"); 

おそらく、あなたが実際にJSONの結果を返すアクションにあなたの視野をリダイレクトしようとしています。

はREMにこれらの行を試してみて、何が起こるかを参照してください。

UPDATE:

あなたがMVCの動作方法を誤解しているように私には思えます。あなたは、それは次のようになりますので、あなたのアクションビューをきれいにしようとすることができますあなたの問題を解決するために :

public ActionResult Index() 
    { 
     return View(); 
    } 

次に、あなたのjqGridが含まれている必要があり、関連するビューを、持っている必要があります。 次に、単にjsonデータを返すアクションが必要です。 そのアクションは、あなたのjqGridによって常に呼び出されます。 これはまさにGridDataの機能です。 jqGridから呼び出されたGridData原因にリダイレクトしません。

クレイグStuntzは、その程度の良いtutorialを持っています。 これはoneでも役に立ちます。

あなたは私のサンプルコードhereをダウンロードすることができます。

+0

かなりそうではありません。しかし、それは私にアイデアを与えました。特定のコントローラーとアクションにリダイレクトされました。残念ながら私は同じ結果を得ました。私は試してもこれを行うことができないと私は保証します。 – SoftwareSavant

+0

@ user729820:ルーティングも確認してください。 – LeftyX

+0

私のルーティングを見てきました。私のルーティングエンジンは、リダイレクトするのではなく、私にページをダウンロードさせるのはどういうことでしょうか? – SoftwareSavant

関連する問題