【发布时间】:2015-06-30 08:15:16
【问题描述】:
在对 Web API 服务的调用中,我需要将以下类属性发送到其控制器方法:
public class FindBookingRequestModel
{
public string ReservationNumber { get; set; }
public string CreditCardNumber { get; set; }
public string EmailAddress { get; set; }
public string Origin { get; set; }
public string Destination { get; set; }
public DateTime? StartDate { get; set; }
}
每个用例,我需要验证发送到 Web api 控制器的模型并确保填充以下类属性的三个场景,否则我需要抛出 BadRequest 异常。
-
用例:
{ "ReservationNumber": "WERTSDFFSDF", "CreditCardNumber" : "3333" } -
用例
{ "ReservationNumber" : "WERTSDFFSDF", "EmailAddress" : "somene@gmail", "Origin" : "FRA", "Destination" : "MUN" } -
用例
{ "StartDate" : "2015-12-15", "EmailAddress" : "somene@gmail", "Origin" : "FRA", "Destination" : "MUN" }
所以如果我们将此模型发送到控制器应该是错误的:
{
"ReservationNumber": "WERTSDFFSDF",
"Origin" : "FRA",
}
或者这个:
{
"EmailAddress" : "somene@gmail",
"StartDate" : "2015-12-15",
}
确保按照上述用例传递字段的最有效方法是什么?
【问题讨论】:
-
您可以编写自定义属性并在 ASP.Net WebApi 中进行模型验证 - asp.net/web-api/overview/formats-and-model-binding/…
-
谢谢,但我需要验证类实例——特定调用是否适合用例。
-
我的第一个想法是拥有具有所需属性的单独对象,但没有基于提供的参数重载 Web API 方法这样的事情。用例应该至少有这些参数,而不是更多,对吗?
-
您的用例能否在客户端分开,例如通过有不同的输入形式?然后,您可以为每个用例处理不同的控制器方法,这将使服务器端的验证更加清晰。
-
@rdoubleui 事情是在这里只获得一个类 - 我们不允许制作三个不同的视图模型以适应用例,我们也不想在控制器上制作三个单独的方法而不是一个跨度>
标签: c# validation asp.net-web-api