如何将初始json传递给MVC控制器中的另一个函数

时间:2014-08-18 10:11:16

标签: c# asp.net-mvc

我正在尝试使用MVC Controller实现状态机。客户端将json消息发送到控制器的动作Play。每条消息都有一个MessageCode和一些其他附加数据,这些数据取决于MessageCode。

例子:

{MessageCode:1, words:["aaa","bbb","ccc"]}

{MessageCode:2, ClientsAge: 56, ClientsName:"Jon"}

...

因此,我有

public JsonResult Play(int MessageCode)
{
        switch(MessageCode){
         case 1:
//Perform some additional checks
         return _DoSomething1(words);
         case 2:
//Perform some additional checks
         return _DoSomething2(ClientsAge,ClientsName);
//
}

每个私有方法_DoSomething1,_DoSomething2等都有不同的签名。

2 个答案:

答案 0 :(得分:0)

您可以使用Json函数返回属性的JSON序列化,例如

return Json(ClientsName) 

并使用Json()获取您想要转换为JSON的内容

如果您想要串行化并取消实现JSON,请查看此链接How to: Serialize and Deserialize JSON Data

答案 1 :(得分:0)

您可以创建一个自定义模型绑定器,它将您的Json输入转换为不同的模型(例如Step01ModelStep02Model,...)

This SO question中有一些代码可以指向正确的方向。

基本上不是在一个操作方法中进行切换,而是在Model Binder中执行,然后调用类中的重载操作:

public ActionResult Play(Step01Model step01Model) { ... }

public ActionResult Play(Step02Model step02Model) { ... }