2013-03-28 92 views
1

我无法建立这个代码models.views - - 缺少投我有一个API控制器,它经由模型服务层获取数据,这是我所:无法隐式转换类型 -

API控制器

public class RoleApiController : ApiController 
{ 
    private RoleService _roleService = new RoleService(); 

    public RoleUser GetRoleUser(int sectionID) 
    { 
     if (sectionID != null) 
     { 
      return _roleService.GetUsers(sectionID); 
     } 
     throw new HttpResponseException(HttpStatusCode.NotFound); 
    } 
} 

模型

public partial class RoleView 
{ 
    public RoleView() 
    { 
     this.Users = new HashSet<RoleUser>(); 
    } 
    public ICollection<RoleUser> Users { get; set; } 
} 

public class RoleUser 
{ 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 

错误消息:

无法隐式转换类型System.Collections.Generic.IEnumberable < ... RoleUser>到RoleUser。一个显式转换存在(缺少强制转换?)

这条线:return _roleService.GetUsers(sectionID);

的JavaScript

<div> 
Name: <span id="name"></span> 
</div> 
<div> 
    Email: <span id="email"></span> 
</div> 
<script type ="text/javascript" src="~/Scripts/jquery-1.9.1.min.js"></script> 
<script type ="text/javascript"> 
    getRoleUser(9, function (roleUser) { 
     $("#name").html(roleUser.Name); 
     $("#email").html(roleUser.Email); 
    }); 
    function getRoleUser(id, callback) { 
     $.ajax({ 
      url: "/api/RoleUser", 
      data: { id: id }, 
      type: "GET", 
      contentType: "application/json;charset=utf-8", 
      statusCod: { 
       200: function (roleUser) { callback(roleUser); }, 
       404: function() { alter("Not Found!"); } 
      } 
success: function(result){ 
       result.each(function()) 
      } 
     }); 
    } 
</script> 
+0

[连接api控制器与服务层]可能的重复(http://stackoverflow.com/questions/15689989/connecting-api-controller-with-service-layer) – jrummell

回答

2

乌姆您返回用户的集合时,你应该只返回一个?我无法真正知道你是否真的想从你展示的代码中获得收藏,但这是你的问题。

这将让你的代码编译,但可能不是你想要的解决方案:

return _roleService.GetUsers(sectionID).FirstOrDefault(); 
+0

感谢,帮助编译,但现在我意识到它在应该有的地方没有显示任何结果。至于我想要返回 - 我想返回一个集合,所以我会改变我的代码在服务? – Masriyah

+0

我添加了服务层来查看。谢谢 – Masriyah

+1

如果您希望Controller操作返回一个集合,您应该将Controller的返回类型从RoleUser更改为IEnumerable 并删除我在答案中添加的.FirstOrDefault()。 –

1

你的方法声明中说,它返回RoleUser(单数),而你的方法会暗示它返回一个集合。因此,无论您需要修复该方法以返回一个列表,还是只返回来自GetUsers方法的单个结果。

相关问题