用于参数和验证的c# WCF REST强类型WebGet对象
本文关键字:REST 强类型 WebGet 对象 WCF 参数 验证 用于 | 更新日期: 2023-09-27 18:07:04
你能在WCF 4.0 Rest中像在ASP中那样做吗?净MVC吗?
在ASP。我可以创建一个通常称为ViewModel的强类型对象来处理错误验证。
而不是下面的:
public ActionResult SomeAction(string firstname, string lastname, string address, int phone)
我可以有以下内容:
public ActionResult SomeAction(UserObject obj)
其中UserObject定义为:
public class UserObject
{
[Required(ErrorMessage = "firstname is a required paramater")]
public string firstname { get; set; }
[StringLength(50, ErrorMessage = "lastname is too long")]
public string lastname { get; set; }
[StringLength(160)]
public string address { get; set; }
public int phone { get; set; }
}
我基本上想做的是在一个强类型对象中创建参数,并在那里有我的错误消息。然后,我可以将错误消息格式化为xml并将其返回给用户。
在WCF REST中也是如此。而不是我的方法看起来像:
[WebGet]
public IEnumerable<ObjectResult> SomeAction(string firstname, string lastname, string address, int phone)
我想要以下内容:
[WebGet]
public IEnumerable<ObjectResult> SomeAction(UserObject obj)
这在WCF REST 4.0中可能吗?
默认WCF不能这样做。您必须使用IDispatchMessageFormatter
的自定义实现创建自定义行为,以便从查询字符串中收集参数并构建对象。下面是一个如何构建这种行为和格式化程序的示例。这就像你必须在ASP中为每个自定义ViewModel编写自定义模型绑定一样。净MVC。
顺便说一句。也没有内置的逻辑,可以简单地允许您调用验证(如MVC中的Model.IsValid
)。您将需要手动使用与数据注释一起使用的基础结构类(System.ComponentModel.DataAnnotations.Validator
)。