我正在尝试查看通过IModelBinder
接口在POST中发送的文本。我有类似的东西:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext.HttpContext.Request.ContentType.ToLowerInvariant().StartsWith("my special content type"))
{
var data = ???
...哪里???应该是在POST中发送的文本。 (我认为)应该是一块文本,但是我看不到如何访问它。有人可以启发我吗?
最佳答案
好的,按照@ScottRickman的建议,我查看了Accessing the raw http request in MVC4上的文章,并了解了如何将其应用于IModelBinder:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext.HttpContext.Request.ContentType.ToLowerInvariant().StartsWith("my special content type"))
{
var body = GetBody(controllerContext.HttpContext.Request);
var model = MyCustomConverter.Deserialize(body, bindingContext.ModelType);
return model;
}
}
private static string GetBody(HttpRequestBase request)
{
var inputStream = request.InputStream;
inputStream.Position = 0;
using (var reader = new StreamReader(inputStream))
{
var body = reader.ReadToEnd();
return body;
}
}
这完全按照需要工作。
关于c# - IModelBinder:访问请求的原始数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30214109/