2013-03-28 19 views
0

我正在嘗試使用api控制器 - 我將它連接到服務層以返回結果並在設置中遇到一些麻煩。這是我有:將api控制器連接到服務層

服務

public IEnumerable<RoleUser> GetUsers(int sectionID) 
{ 
    var _role = DataConnection.GetRole<RoleUser>(sectionID, r => new RoleUser 
    { 
     Name = RoleColumnMap.Name(r), 
     Email = RoleColumnMap.Email(r) 
    }, resultsPerPage: 20, pageNumber: 1); 
    return _role; 
} 

型號

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; } 
} 

阿比控制器 我應該連接RoleUser或到RoleView以及如何設置我的數據在這裏從服務中獲得。

public class RoleApiController : ApiController 
{ 
    public RoleUser GetRoleUser(int sectionID) 
    { 
     if (sectionID != null) 
     { 
      return new RoleUser 
      { 
       Name = , 
       Email = 
      }; 
     } 
     throw new HttpResponseException(HttpStatusCode.NotFound); 
    } 
} 

查看

<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!"); } 
      } 
     }); 
    } 
</script> 
+0

您有什麼樣的麻煩? – jrummell

+0

@ jrummell設置api控制器,以便從上面的服務層 - api控制器獲取名稱和電子郵件信息。 – Masriyah

回答

0

所有你需要做的就是在你的控制器增加一個字段爲您服務類:

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); 
    } 
} 
+0

現在我得到的錯誤'不能隱式轉換類型system.collections ... RoleUser到RoleView' - 缺少一個強制轉換? – Masriyah

+0

現在你提到它了,'GetUsers()'方法返回一個集合,但是你的Action返回一個用戶。 'sectionID'和'RoleUser'之間的關係是什麼?每個'sectionID'有多少個角色?如果是這樣,你將不得不修改你的服務層。 – jrummell

+0

我認爲我應該使用'RoleView'而不是'RoleUser'? – Masriyah