Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 方法未从razor视图触发_Asp.net Mvc_Yui_Razor_Yui Datatable - Fatal编程技术网

Asp.net mvc 方法未从razor视图触发

Asp.net mvc 方法未从razor视图触发,asp.net-mvc,yui,razor,yui-datatable,Asp.net Mvc,Yui,Razor,Yui Datatable,我正在使用ASP.NETMVC3和razor视图引擎 我的NewsController中有以下方法: public JsonResult GetAllNews() { var items = newsService.FindAll(); var jsonResult = Json(items); return jsonResult; } public class HomeController : Controller { public ActionResult In

我正在使用ASP.NETMVC3和razor视图引擎

我的NewsController中有以下方法:

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

   return jsonResult;
}
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);
    }
}
在我看来,我想尝试调用这个方法来填充我的YUI数据表。我在这个方法的第一行放了一个断点,但是没有命中断点。以下是我在视图中调用此方法的代码:

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>

//新闻网格
var newsColumnDefs=[
{键:“id”,标签:“标识符”},
{键:“标题”,标签:“标题”},
{键:“body”,标签:“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={
字段:[
{key:“id”},
{key:“title”},
{key:“body”}
]
};
var myDataTable=newyahoo.widget.DataTable(“grdNews”,newscollendefs,newsDataSource);

我做错了什么?

别忘了让这个方法也为GET请求返回JSON:

public JsonResult GetAllNews()
{
   var items = newsService.FindAll();
   return Json(items, JsonRequestBehavior.AllowGet);
}
另外,设置a并不意味着它将调用该方法。也许你的代码中还有其他部分有问题。安装并查看是否发送了AJAX请求


更新:

现在问题已经澄清,您正在谈论YUI datatable,下面是一个完整的工作示例:

控制器:

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

   return jsonResult;
}
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
):

@{
ViewBag.Title=“主页”;
}
var newsColumnDefs=[
{键:“id”,标签:“标识符”},
{键:“标题”,标签:“标题”},
{键:“body”,标签:“body”}
];
var newsDataSource=newyahoo.util.DataSource('@Url.Action(“GetAllNews”));
newsDataSource.responseType=YAHOO.util.DataSource.TYPE_JSON;
newsDataSource.responseSchema={
结果列表:“结果”,
字段:[“id”、“标题”、“正文”]
};
var myDataTable=newyahoo.widget.DataTable(“grdNews”,newscollendefs,newsDataSource);

@Darin:谢谢。如果发送了AJAX请求,我需要注意什么?我还需要在我的应用程序上设置什么才能让它工作?@Brendan,一旦你安装FireBug,你可以查看控制台或网络选项卡。所有请求都将列在那里。至于你需要设置什么,我无法回答这个问题,因为你甚至没有解释你想做什么。如果您打算使用YUI,我建议您查看文档和YUI的多个示例。我认为你的问题与ASP.NETMVC无关。这是关于如何使用YUI的。@Darin:我正试图带回新闻条目并填充我的数据表。就这样。我需要尝试确定我的数据没有被带回的原因。“这就是我想做的。”布伦丹,我真的建议你通过考试。正如我所说的,您所展示的控制器操作是非常好的(除了关于允许GET请求的小评论,默认情况下JSON会禁用GET请求)。我怀疑您遇到的问题是设置YUI数据表,但是由于您没有显示任何关于它的代码,我无法解释为什么它不工作。此外,如果您在设置YUI时遇到问题,您可以发布另一个特别标记的问题,因为这与ASP.NET MVC不再相关。@Darin:我同意您的看法,这不是MVC问题。但我不打算为此打开一个新的帖子,我们可以在这个帖子上工作,然后每个人都知道关于我的场景的一切。我用javascript代码更新了我的原始帖子。