2010-12-14 14 views
0

私は、剃刀ビューエンジンでASP.NET MVC 3を使用しています。剃刀ビューからメソッドがトリガーされない

私は私のNewsControllerで次のような方法があります。私の見解では

public JsonResult GetAllNews() 
{ 
    var items = newsService.FindAll(); 
    var jsonResult = Json(items); 

    return jsonResult; 
} 

を私はYUIのデータテーブルを移入するために、この方法を試してみて、呼び出したいです。私はこのメソッドの最初の行にブレークポイントを置くが、ブレークポイントはヒットしない。ここに私のコードは、このメソッドを呼び出すためのビューである:

var newsDataSource = YAHOO.util.DataSource('@Url.Action("GetAllNews");'); 

私も試してみました:

var newsDataSource = YAHOO.util.DataSource("/News/GetAllNews/"); 

両方が動作していないようです。ここで

は私のDataTableのコードです:私は間違っ

<div id="grdNews"></div> 

<script type="text/javascript"> 
    // News grid 
    var newsColumnDefs = [ 
     { key: "id", label: "Identifier" }, 
     { key: "title", label: "Title" }, 
     { key: "body", label: "Body" } 
    ]; 

    //var newsDataSource = YAHOO.util.DataSource('@Url.Action("GetAllNews");'); 
    var newsDataSource = YAHOO.util.DataSource("/News/GetAllNews/"); 
    newsDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; 
    newsDataSource.responseSchema = { 
     fields: [ 
     { key: "id" }, 
     { key: "title" }, 
     { key: "body" } 
     ] 
    }; 

    var myDataTable = new YAHOO.widget.DataTable("grdNews", newsColumnDefs, newsDataSource); 
</script> 

何をしているのですか?

答えて

1

は、同様にGETリクエストのため、このメソッドの戻り値JSONを作ることを忘れないでください:

public JsonResult GetAllNews() 
{ 
    var items = newsService.FindAll(); 
    return Json(items, JsonRequestBehavior.AllowGet); 
} 

はまたdatasourceを設定することは、メソッドを呼び出すことを意味するものではありません。多分あなたのコードの他の部分には問題があります。 FireBugをインストールし、AJAXリクエストが送信されているかどうかを確認してください。


UPDATE:

コントローラー:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult GetAllNews() 
    { 
     var news = new[] 
     { 
      new { id = 1, title = "title 1", body = "body 1" }, 
      new { id = 2, title = "title 2", body = "body 2" }, 
      new { id = 3, title = "title 3", body = "body 3" }, 
     }; 
     return Json(new 
     { 
      Result = news 
     }, JsonRequestBehavior.AllowGet); 
    } 
} 

ビュー(~/Views/Home/Index.cshtml質問が明らかにされているとあなたはYUIのDataTableについて話していることを今

、ここでは完全な作業例です):

@{ 
    ViewBag.Title = "Home Page"; 
} 

<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.2r1/build/fonts/fonts-min.css" /> 
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.2r1/build/datatable/assets/skins/sam/datatable.css" /> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/yahoo-dom-event/yahoo-dom-event.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/connection/connection-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/json/json-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/element/element-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/datasource/datasource-min.js"></script> 
<script type="text/javascript" src="http://yui.yahooapis.com/2.8.2r1/build/datatable/datatable-min.js"></script> 

<script type="text/javascript"> 
    var newsColumnDefs = [ 
     { key: "id", label: "Identifier" }, 
     { key: "title", label: "Title" }, 
     { key: "body", label: "Body" } 
    ]; 

    var newsDataSource = new YAHOO.util.DataSource('@Url.Action("GetAllNews")'); 
    newsDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; 
    newsDataSource.responseSchema = { 
     resultsList: 'Result', 
     fields: [ "id", "title", "body" ] 
    }; 

    var myDataTable = new YAHOO.widget.DataTable("grdNews", newsColumnDefs, newsDataSource); 
</script> 

<div id="grdNews"></div> 
+0

@ダリン:ありがとう。 AJAXリクエストが送信された場合、私は見た目に何をする必要がありますか?それを動作させるために私のアプリで何を設定する必要がありますか? –

+0

@Brendan、FireBugをインストールしたら、コンソールまたはネットタブを見ることができます。すべてのリクエストがリストに表示されます。あなたが何をしようとしているのか説明していないので、私はこの質問に答えることができません。これを使用する予定の場合は、ドキュメントとYUIの複数の例を参照することをお勧めします。あなたの質問はASP.NET MVCとは関係がないと思います。 YUIの使い方についてです。 –

+0

ダーリン:私はニュースアイテムを戻して、私のデータテーブルにデータを取り込もうとしています。それでおしまい。なぜ私のデータが戻ってこないのかを調べる必要があります。それが私がやろうとしていることです。 –

関連する問題