MVC WebAPI模型绑定问题

时间:2016-11-25 11:57:27

标签: c# asp.net-mvc asp.net-web-api

我面临一个问题,需要一点帮助

我在webapi中有请求中有模型的请求

public HttpResponseMessage Update(MyRequest req)

class MyRequest{
public string UserName {get; set;}
public CustomEnum Type {get; set;}
}

Enum CustomEnum {
Registered ,
UnRegistered
}

问题在于我的请求我发送的枚举值不是CustomEnum的一部分,但是因为WEBAPI本身映射了值,它给了我一个未找到的例外

所以我想为什么不在请求到达时我自己就像

一样
class MyRequest{
public string {get; set;}
public CustomEnum {
get { 
 if ( ??? = "NEWVALUE" )  ??? = "Registered";
return {???} ; set;}
}

问题是我无法得到??? get accessor中的这个值,有人可以帮助我如何获取它

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,那么您必须尝试将值绑定到CustomEnum类型,这不是enum的任何定义值 - 因此该值不能绑定到属性我认为,这是异常的原因。

我认为你可以做的事情就像:

class MyRequest{
    public string UserName {get; set;}
    public string Type {get; set;}
    pulic CustomEnum? TypeAsEnum 
    { 
        get{
            CustomEnum value;
            return Enum.TryParse(typeof(CustomEnum), out value) ? value : (CustomEnum?)null; 
        }
    }
}

然后我认为任何值都应该可绑定到Type属性(因为它是string)并且您可以使用TypeAsEnum属性来获取CustomEnum类型值,如果Type无法转换为CustomEnum类型。在任何情况下,您仍然可以从Type属性获取值的文本表示。