asp.net web api 是否有类似 [Bind(Exclude="Property")] 的东西?
Is there something like [Bind(Exclude="Property")] for asp.net web api?
我试图从网络 api 控制器中的 Post 操作中排除 属性,asp.net 是否有类似 [Bind(Exclude="Property")]
的内容网页 api?
这是我的模型:
public class ItemModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
我想在 Post 操作中排除 Id,因为它是自动生成的,但我需要在我的 Get 操作中 return 它。
我知道我可以有两个模型,一个用于我的 Post 操作,一个用于我的 Get 操作,但我试图只用一个模型来做到这一点。
我更喜欢映射模型,但这可以通过在 ShouldSerialize 方法中检查请求是否为 POST 来实现:
public class MyModel
{
public string MyProperty1 { get; set; }
public string MyProperty2 { get; set; }
public bool ShouldSerializeMyProperty2()
{
var request = HttpContext.Current.Request;
if (request.RequestType == "POST") return false;
return true;
}
}
其中您的方法名称是 属性 的名称,前缀为 ShouldSerialize。
请注意,这适用于 JSON。对于 XML,您需要将以下行添加到您的配置中:
config.Formatters.XmlFormatter.UseXmlSerializer = true;
您可以简单地为 POST 创建一个 DTO。
我试图从网络 api 控制器中的 Post 操作中排除 属性,asp.net 是否有类似 [Bind(Exclude="Property")]
的内容网页 api?
这是我的模型:
public class ItemModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
我想在 Post 操作中排除 Id,因为它是自动生成的,但我需要在我的 Get 操作中 return 它。
我知道我可以有两个模型,一个用于我的 Post 操作,一个用于我的 Get 操作,但我试图只用一个模型来做到这一点。
我更喜欢映射模型,但这可以通过在 ShouldSerialize 方法中检查请求是否为 POST 来实现:
public class MyModel
{
public string MyProperty1 { get; set; }
public string MyProperty2 { get; set; }
public bool ShouldSerializeMyProperty2()
{
var request = HttpContext.Current.Request;
if (request.RequestType == "POST") return false;
return true;
}
}
其中您的方法名称是 属性 的名称,前缀为 ShouldSerialize。
请注意,这适用于 JSON。对于 XML,您需要将以下行添加到您的配置中:
config.Formatters.XmlFormatter.UseXmlSerializer = true;
您可以简单地为 POST 创建一个 DTO。