Помощник ActionResult и распознаватель разных типов - PullRequest
0 голосов
/ 18 ноября 2009

Идея состоит в том, чтобы использовать одни и те же методы действия для разных типов результатов. И.Е.

/ категория / подробности /? ResultFormat = * JSON 1004 *

/ категория / подробности /? ResultFormat = XML

Таким образом, есть некоторый помощник ActionResult, который содержит зарегистрированные пары преобразователей значений

"json", JsonValueResolver

"xml", XmlResolver

и т. Д. ... уже есть решение для этого, или я должен подумать о каком-то специальном преобразователе? Automapper имеет хорошее решение для определения стоимости. Есть идеи?

1 Ответ

1 голос
/ 18 ноября 2009
public class SmartResult : ActionResult
{
    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }

        if (context.HttpContext.Request.QueryString["ResultFormat] == "json")
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            context.HttpContext.Response.Write(serializer.Serialize(this.Data));
        } else if(context.HttpContext.Request.QueryString["ResultFormat] == "xml")
                    {
              ...serialize using xmlserializer
        }else{
            throw new InvalidOperationException();
        }
    }

    public object Data { get; set; }
}
...