Бросать исключение на Конструктор - PullRequest
0 голосов
/ 26 апреля 2018

Я создаю новый шаблон webapi, и я решил использовать новый шаблон, чтобы сделать мою последовательность.

Я пытаюсь установить свои сообщения об ошибках в конструкторе моего объекта класса Pessoa

public class PessoaModel
{
    public int PessoaId { get; set; }
    public string PessoaNome { get; set; }
    public string PessoaNomeFantasia { get; set; }
    public string PessoaCnpjCpf { get; set; }
    public string PessoaEmail { get; set; }

    PessoaModel()
    {
        if (PessoaNome == null)
            throw new Exception("Preencha Nome");
        if (PessoaEmail == null)
            throw new Exception("Preencha Email");

        if (PessoaCnpjCpf == null)
            throw new Exception("Preencha Cpf ou Cnpj");
    }
} 

Тогда происходит исключение, но контроллеры продолжают работать

[HttpPost]
[Route("Pessoa")]
public IHttpActionResult Post(PessoaModel pessoa)
{
    if (_pessoa.Insert(pessoa))
        return Ok();

    return BadRequest("Pessoa não inserida");
}

Кто-то знает, как это работает или если есть лучший способ сделать это?

1 Ответ

0 голосов
/ 26 апреля 2018

То, что вы делаете, не имеет смысла. Вы заставляете свойства иметь значение, когда вы ничего не сделали, чтобы дать им значение. В то время они могут быть установлены только из конструктора.

Поскольку вы используете MVC / Web API, я хотел бы использовать аннотации данных, чтобы модель имела правильные значения.

public class PessoaModel
{
    [Required(ErrorMessage = "ID is required.")]
    public int PessoaId { get; set; }
}

В вашем действии:

if (!this.ModelState.IsValid)
{
    return RedirectToAction("Error"); // give an error, do something else
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...