我不確定它是否會有所幫助,但我在上面的評論中提到,我最終使用自定義模型聯編程序來執行此操作。我挖出了什麼,我相信是促使這個問題的原代碼,而這也正是我結束了:
public async Task<ActionResult> Post(dynamic request)
{
return await ExecuteRequest(request, "application/json");
}
和一個自定義的模型綁定如下(它的工作原理上稱爲「後」或「公共行爲「儘管你可以選擇自己的約定 - 回退到默認的所有其他行動)
public class MyModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var actionName = controllerContext.RouteData.Values["Action"];
if (controllerContext.Controller.GetType() == typeof(MyController) && actionName != null &&
(string.Compare(actionName.ToString(), "post", StringComparison.OrdinalIgnoreCase) == 0 ||
string.Compare(actionName.ToString(), "public", StringComparison.OrdinalIgnoreCase) == 0))
{
string contentText;
using (var stream = controllerContext.HttpContext.Request.InputStream)
{
stream.Seek(0, SeekOrigin.Begin);
using (var reader = new StreamReader(stream))
contentText = reader.ReadToEnd();
}
if (string.IsNullOrEmpty(contentText)) return (null);
return JObject.Parse(contentText);
}
return base.BindModel(controllerContext, bindingContext);
}
}
然後註冊自定義模型粘合劑的Application_Start的開頭:
System.Web.Mvc.ModelBinders.Binders.DefaultBinder = new MyModelBinder();
護理講解下投票,所以我可以改善這個問題? – mutex
檢查一下,它可能會幫助你。 [反序列化JSON到C#動態對象?](http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object) –
@ RezaShirazian:謝謝,我知道如何反序列化爲動態對象,只是想知道是否有一種方法來自動執行它。我目前的做法是實現一個自定義模型綁定器來做到這一點,但正在尋找其他想法。 – mutex