Response.AsJson从NancyFx中的函数调用它时不起作用

时间:2012-04-08 20:09:28

标签: asp.net c#-4.0 extension-methods anonymous-types nancy

扩展方法:

Response.AsJson
Response.AsXml

从约束器调用时工作正常,如:

public class TweetModule : NancyModule
    {
     public TweetModule()
            : base("/")
        {

            Post["/{action}.json/"] = parameters =>
            {
               return Reponse.Asjson(new {output:parameters.action}); // OK
            }
        }
     }   

但是当我从这样的函数调用它时:

public class TweetModule : NancyModule
    {
     public TweetModule()
            : base("/")
        {

            Post["/{action}.{format}/"] = parameters =>
            {
               return GetResponse( parameters.action,parameters.format); // Error
            }
        }

        public Response GetResponse(string action,string format)
        {
           if (format == "json")
            return Response.AsJson(new {output:action}); // error
          else
            return Response.AsXml(new {output:action}); // error
        }


     }   

我得到了这个例外:

  

<> f__AnonymousType0`1 [System.String]无法序列化,因为它   没有无参数构造函数。

任何建议?

1 个答案:

答案 0 :(得分:3)

Na的效果很好。问题是您捕获的参数被称为 {fortmat} ,然后您传递 parameters.format ,由于拼写错误而永远不会被捕获

我必须指出,你的代码甚至不会编译,因为函数不是C#中的有效关键字,我只是假设你实际意味着要说 public 相反。

希望这有帮助