2011-08-31 56 views
3

你可以在WCF 4.0中做下面的事情像在ASP.NET MVC中一样休息吗?c#WCF REST强类型WebGet对象的参数和验证

在ASP.NET MVC中,我可以创建一个通常称为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这可能吗?

回答

1

默认WCF无法做到这一点。您必须使用自定义实现IDispatchMessageFormatter创建自定义行为以从查询字符串收集参数并构建对象。 Here is an example如何构建这样的行为和格式化程序。这就好像您必须为ASP.NET MVC中的每个自定义ViewModel编写自定义模型联编程序。

Btw。也没有构建逻辑,只会让你调用验证(如MVC中的Model.IsValid)。您将需要手动使用与数据注释一起使用的基础架构类(System.ComponentModel.DataAnnotations.Validator)。

+0

无赖。感谢您的解释!我实际上会使用企业库5.0验证块,但为了简单起见,我将这些细节留在了帖子后面。再次感谢! – jray0039