如果你想将自定义JSON对象传递给MVC操作,则可以使用此解决方案,它非常好用。
public string GetData()
{
String jsonString = new StreamReader(this.Request.InputStream).ReadToEnd();
var dic =
Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<String, dynamic>>(jsonString);
string result = "";
result += dic["firstname"] + dic["lastname"];
result += ", Age: " + (int)dic["age"];
if ((bool)dic["married"])
result += ", Married";
return result;
}
这种解决方案的真正好处在于,您不需要为每个参数组合定义新类,并且您可以轻松地将对象转换回其原始类型。
更新
现在,您甚至可以合并GET和POST操作方法,因为您的post方法不再具有任何参数,就像这样:
public ActionResult GetData()
{
if (Request.HttpMethod.ToString().Equals("GET"))
return View();
.
.
.
var dic = GetDic(Request);
.
.
String result = dic["fname"];
return Content(result);
}
你可以使用类似这样的帮助方法来简化你的工作。
public static Dictionary<string, dynamic> GetDic(HttpRequestBase request)
{
String jsonString = new StreamReader(request.InputStream).ReadToEnd();
return Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(jsonString);
}