1

このコードの作成に問題があります-モデルを介してサービスレイヤーからデータを取得する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>
4

2 に答える 2

2

1 つだけを返す必要があるのに、ユーザーのコレクションを返していますか? あなたが示したコードから、実際にコレクションが必要かどうかはわかりませんが、それはあなたの問題です。

これにより、コードをコンパイルできますが、必要なソリューションではない場合があります。

return _roleService.GetUsers(sectionID).FirstOrDefault();
于 2013-03-28T20:26:21.917 に答える
1

メソッド宣言は、RoleUser (単数) を返すと言っていますが、メソッドはコレクションを返すことを示唆しています。したがって、リストを返すようにメソッドを修正するか、GetUsers メソッドから単一の結果のみを返す必要があります。

于 2013-03-28T20:28:17.277 に答える