如何返回带有列表的对象?

时间:2015-08-05 08:25:35

标签: c#

我的代码现在看起来像这样:

return Ok(new
{
     error = "Username not found",
     errors = "Username not found",
     success = false
});

return Ok(new
{
     error = "Username not found",
     errors = results.Errors,
     success = false
});

我想要做的是将错误转换为字符串列表,然后在第一次返回时将列表的第一个元素设置为“未找到用户名”。我也希望有一个课程而不是新课程,但我应该使用私人课程还是公共课程?

有人可以就如何做到这一点给我一些建议吗?

2 个答案:

答案 0 :(得分:0)

如果你使用私有构造函数,则必须通过另一个公共API公开它 - 例如静态方法。所以你有两个选择,一个是公共构造函数或属性初始化器。

最后制作错误列表很简单,Lucas Trzesniewski给你举例说明。

公共建设者的版本:

public class Ok
{
    public Ok(IList<string> errors, bool success)
    {
        this.Errors = errors;
        this.Success = success;
    }

    public IList<string> Errors { get; set; }

    public bool Success { get; set; }
}

带私有构造函数的版本:

public class Ok
{
    private Ok(IList<string> errors, bool success)
    {
        this.Errors = errors;
        this.Success = success;
    }

    public IList<string> Errors { get; set; }

    public bool Success { get; set; }

    public static Ok Create(IList<string> errors, bool success)
    {
        return new Ok(errors, success);
    }
}

答案 1 :(得分:0)

查看响应,您可以使用Web API中的内置方法来简化此操作。

例如,您的回复的success属性突出显示回复可能不是确定,并且应该是 BadRequest

您可以使用ModelState返回整个方法中构建的错误列表。例如,在您的控制器中:

if (!userFound) {
    ModeState.AddModelError("Username", "Username not found");
    return BadRequest(ModelState);
}

在这个例子中,我建议使用内置构造来处理错误。这样,您就不需要额外的类来处理客户端错误。