2014-02-23 86 views
0

现在使用的服务栈使用下面的控制器功能来检索本地DB数据:AngularJS +服务栈查询返回类型

// GET: /Checklist/GetChecklists 
     public IEnumerable<Checklist> GetChecklists() 
     { 
      var dbFactory = new ServiceStack.OrmLite.OrmLiteConnectionFactory(SqliteFileDb, new SqlServerOrmLiteDialectProvider(), true); 
      using (var db = dbFactory.Open()) 
      { 
       var retObj = db.Select<Checklist>(); 
       return retObj; 
      } 
     } 

成功地从我的DB retrieves data

问题是该函数总是返回类型的的数据而不是实际的数据本身。

如: Example 1 Example 2

必须做什么,这样的函数实际上返回数据本身,而不是类型?

感谢

+0

该代码看起来不错。但实际的行动方法在哪里?调用'GetChecklists()'的ServiceStack服务中的方法并返回它的结果? – Scott

+0

再次斯科特。我直接从我的(app.js)javascript文件调用该函数(这可能是问题??)。没有我正在路由的操作方法。下面显示了几乎所有的代码:http://oi58.tinypic.com/2rnua8x.jpg – freschx

+0

你是否解决了这个问题? – Scott

回答

1

您使用ServiceStack.ORMLite但您没有使用ServiceStack,你正在使用的WebAPI。

在你的截图中,我可以看到你的ChecklistController继承自Controller,但对于WebApi,它应该继承自ApiController以使序列化工作。

我也动词属性添加到方法:

public class ChecklistController : ApiController 
{ 
    ... 

    [System.Web.Http.HttpGet] 
    public IEnumerable<Checklist> GetChecklists() 
    { 
     ... 
    } 

在你WebApiConfig你会想,以确保您have a route setup。通常WebApi的前缀为api这是为了避免与MVC路由冲突。

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "API Default", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

然后让你到/调用API /清单/ GetChecklists