2013-03-28 127 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方法的單個結果。

相關問題