Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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
C# 在我的MVC4应用程序中创建JSON端点的公认方法是什么?_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 在我的MVC4应用程序中创建JSON端点的公认方法是什么?

C# 在我的MVC4应用程序中创建JSON端点的公认方法是什么?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我想为API创建一个端点 目前,我的应用程序中有一个类,它执行一个存储过程并返回一个对象列表,我可以轻松地将其转换为json,如下所示: public ActionResult Events() { List<HobbsEventsMobile.Models.Event> events = HobbsEventsMobile.Models.Event.GetEventSummary(); var jsonSerializer = new JavaScriptSeri

我想为API创建一个端点

目前,我的应用程序中有一个类,它执行一个存储过程并返回一个对象列表,我可以轻松地将其转换为json,如下所示:

public ActionResult Events()
{
    List<HobbsEventsMobile.Models.Event> events = HobbsEventsMobile.Models.Event.GetEventSummary();

    var jsonSerializer = new JavaScriptSerializer();

    ViewBag.Events = jsonSerializer.Serialize(events);

    return View();
}
但问题是,这显然会渲染布局的其余部分


我可以做些什么来正确设置它,使其成为只呈现JSON而不呈现HTML其余部分的端点?如果有办法对整个控制器执行此操作,则奖励ASP.NET MVC控制器已具有返回JSON的方法:

public ActionResult Events()
{
    var events = HobbsEventsMobile.Models.Event.GetEventSummary();
    return Json(events, JsonRequestBehavior.AllowGet);
}
如果控制器充当JSON端点,则可以创建Web API控制器并返回模型:

public class EventController : ApiController
{
    public object Events()
    {
        return HobbsEventsMobile.Models.Event.GetEventSummary();
    }
}

您可以在此处阅读有关Web API的更多信息:

为了扩展上面的答案,Json函数允许您返回多个值,并且您还可以指定是否允许GET。无论变量的名称是什么,都将是Json负载中的名称。例如:

JsonResult retVal = Json(new { page, total, rows }, JsonRequestBehavior.AllowGet);
这将允许GET,并且将具有data.page、data.total和data.rows的值,假设您在jQuery AJAX调用的success函数中使用了数据的参数名

JsonResult retVal = Json(new { page, total, rows }, JsonRequestBehavior.AllowGet);