用于参数和验证的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中可能吗?

用于参数和验证的c# WCF REST强类型WebGet对象

默认WCF不能这样做。您必须使用IDispatchMessageFormatter的自定义实现创建自定义行为,以便从查询字符串中收集参数并构建对象。下面是一个如何构建这种行为和格式化程序的示例。这就像你必须在ASP中为每个自定义ViewModel编写自定义模型绑定一样。净MVC。

顺便说一句。也没有内置的逻辑,可以简单地允许您调用验证(如MVC中的Model.IsValid)。您将需要手动使用与数据注释一起使用的基础结构类(System.ComponentModel.DataAnnotations.Validator)。