ActionResult助手和不同类型的解析器

时间:2009-11-18 13:30:00

标签: asp.net-mvc actionresult

想法是对不同类型的结果使用相同的操作方法 即。

  

/类别/信息/?的resultFormat = JSON

     

/类别/信息/?的resultFormat = XML

所以要有一些包含已注册的值解析器对的ActionResult助手

  

“json”,JsonValueResolver

     

“xml”,XmlResolver

等...已经有解决方案了,或者我必须考虑某种自定义解析器? Automapper有很好的价值解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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; }
}