2010-12-14 9 views
0

ASP.NET MVC 3을 면도기 뷰 엔진과 함께 사용하고 있습니다.면도기 뷰에서 메서드가 트리거되지 않습니다.

나는 나의 NewsController가에 다음과 같은 방법이 있습니다 내보기에

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

    return jsonResult; 
} 

내가 시도하고 내 유이 데이터 테이블을 채우는이 메소드를 호출합니다. 이 메서드의 첫 번째 줄에 중단 점을 넣었지만 중단 점이 적중되지 않았습니다. 나는 시도조차

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

:

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

모두 작동하지 않는 다음은이 메소드를 호출 할 수있는 뷰에 내 코드입니다.

<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를 설치하면 콘솔 또는 넷 탭을 볼 수 있습니다. 모든 요청이 거기에 나열됩니다. 당신이해야 할 일에 대해 설명하지 않았기 때문에 나는이 질문에 대답 할 수 없습니다. 이 설명서가 유용 할 것이라면 설명서와 여러 가지 유이의 예를 살펴 보는 것이 좋습니다. 귀하의 질문은 ASP.NET MVC와는 아무런 관련이 없다고 생각합니다. YUI를 사용하는 방법에 관한 것입니다. –

+0

@Darin : 뉴스 항목을 가져오고 데이터 테이블을 채우려고합니다. 그게 전부 야. 내 데이터가 왜 다시 나타나지 않는지 확인해야합니다. 그것이 내가하려는 일입니다. –

관련 문제