将web api方法的json数据从控制器传递到视图

时间:2013-05-27 12:12:10

标签: json web-services c#-4.0 asp.net-mvc-4 asp.net-web-api

我的apicontroller中的数据有以下方式 -

public class OutletPOCController : ApiController
{
    OutletPOCContext db = new OutletPOCContext();

    [System.Web.Http.ActionName("GetTabText")]
    public TabTextModel GetTabText(int bizId)
    {
        var outlet = db.Info.Where(t => t.BizId == bizId).SingleOrDefault();
        return new TabTextModel
        {
            HomeTab = outlet.BizHomeTabText,
            AboutTab = outlet.BizAboutTabText,
            TimingsTab = outlet.BizTimingsTabText,
        };
    }

现在我想将这些数据检索到我的视图中。我该如何为这个控制器创建视图并传递上述数据?我的行动方法是什么?我是webapi和json的新手。任何帮助都很明显!提前谢谢!

1 个答案:

答案 0 :(得分:0)

API控制器实际上具有视图,因为您创建了一个cshtml页面来处理您显示数据的方式。 ApiController的目的只是以您想要使用它的格式返回数据。

基本上,API会将原始数据暴露给Web,您以某种方式使用它,然后显示它。

我使用与此类似的东西将数据动态加载到网页中。 只是一个简单的web api,它将数据返回给客户端。

public class APIController : ApiController
{
    [HttpGet]  
    [HttpPost]  // allow both post and get requests
    public IEnumerable<String> GetData()
    {
        return new List<string>() { "test1", "test2" };
    }
}

当您浏览上面的API方法时,它会返回此xml数据

<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
  <string>test1</string>
  <string>test2</string>
</ArrayOfstring>

我使用Jquery并使用(http://api.jquery.com/jQuery.get/)做了我喜欢的事情:

$.get("/api/GetData", function(data) {
  alert("Data Loaded: " + data);
});

使用JS / Jquery进行XML解析的示例:

如果您只是想将数据放入常规视图并在那里使用它而不通过javascript我会使用webapi,而是获取控制器中的数据并将其发送到视图以进行显示({{3 }})。

您还可以查看ViewBag容器,以便将随机奇数数据传递到视图ASP MVC4 - Pass List to view via view model

如果您真的想在视图中呈现数据,请查看以下内容:http://goo.gl/03JTR