在Model.IsValid检查

时间:2015-10-21 09:08:09

标签: c# entity-framework-6 asp.net-web-api2

我有一个web-api-2端点http://mydomain/user/add,它接受​​带有函数签名的HTTPPut

public HttpResponseMessage AddUser(User user)  

用户模型

public class User
{
    public string UserName { get; set; }
    public string Password { get; set; }
    public int Age { get; set; }
}

现在,假设终端客户端现在传递了这样的无效请求。

var user = {
    "UserName": "John Doe",
    "Password": "passw0rd",
    "Age": "35blah"
};

这将在我正在执行的if(!Model.IsValid)检查中找到。现在我明白了,

"User.Age":{
    "ErrorMessage": "",
    "Exception": {
        "Message": "Error converting value \"35blah\" to type 'System.Int32'. Path 'Price', line 1, position 69."
    }
}

当以通用方式以异常方式发生异常时,有没有办法为实体User.Age设置ErrorMessage,这样我就可以隐藏to type 'System.Int32'. Path 'Price', line 1, position 69.这将是乱码的最终客户端?我正在寻找类似的东西,

[ExceptionMessage("User Age is invalid.")]
public int Age { get; set; }

有没有办法达到这个结果,或者我必须做一些像

这样的事情
var errorMessages = new List < string > ();
var age = Model.User.Age;
foreach(var error in age.Errors) {
    errorMessages.Add(
        !String.IsNullOrEmpty(error.ErrorMessage) ? 
            error.ErrorMessage : 
            "Age is invalid");
}

关于如何进行的任何指示?

0 个答案:

没有答案