c # WCF REST строго типизированный объект WebGet для параметров и проверки - PullRequest
4 голосов
/ 31 августа 2011

Можете ли вы сделать ниже в WCF 4.0 Отдых, как в ASP.NET MVC?

В 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 Ответ

2 голосов
/ 31 августа 2011

WCF по умолчанию не может этого сделать.Вы должны создать пользовательское поведение с пользовательской реализацией IDispatchMessageFormatter для сбора параметров из строки запроса и построения объекта. Вот пример , как построить такое поведение и средство форматирования.Это было бы, как если бы вам приходилось писать пользовательские связующие модели для каждой пользовательской модели представления в ASP.NET MVC.

Кстати.также нет встроенной логики, которая бы позволяла вам вызывать валидацию (например, Model.IsValid в MVC).Вам нужно будет использовать классы инфраструктуры, используемые с аннотациями данных вручную (System.ComponentModel.DataAnnotations.Validator).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...