Asp.net mvc 什么是Request.InputStream以及何时使用它?
问题很简单。什么是Asp.net mvc 什么是Request.InputStream以及何时使用它?,asp.net-mvc,asp.net-mvc-3,jquery,Asp.net Mvc,Asp.net Mvc 3,Jquery,问题很简单。什么是Request.InputStream以及何时使用它。它总是用来读取post请求中发送的整个html正文,还是只读取其中发送的一些参数?为什么我不应该通过在Ajax请求中传递数据来将数据作为参数发送到服务器端代码 在本例中,我可以在数据:中传递参数,也可以在请求.InputStream中读取参数。我什么时候应该用哪一种 例如: 在控制器中: public ActionResult GetSomeData(string someData) { Re
Request.InputStream
以及何时使用它。它总是用来读取post请求中发送的整个html正文,还是只读取其中发送的一些参数?为什么我不应该通过在Ajax请求中传递数据来将数据作为参数发送到服务器端代码
在本例中,我可以在数据:
中传递参数,也可以在请求.InputStream
中读取参数。我什么时候应该用哪一种
例如:
在控制器中:
public ActionResult GetSomeData(string someData)
{
Request.InputStream.Position = 0;
System.IO.StreamReader str = new System.IO.StreamReader(Request.InputStream);
string sBuf = str.ReadToEnd();
return Json("something");
}
Ajax请求:
$.ajax({
type: "POST",
url: "Home/GetSomeData",
data: "{someData:'Hello'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg);
// Insert the returned HTML into the <div>.
$('#dvResult').html(msg);
}
});
$.ajax({
类型:“POST”,
url:“主页/GetSomeData”,
数据:“{someData:'Hello'}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(msg){
警报(msg);
//将返回的HTML插入到。
$('#dvResult').html(msg);
}
});
请求。InputStream允许您访问原始请求数据。如果使用一些标准格式格式化此数据,例如应用程序/x-www-form-urlencoded
或多部分/表单数据
或默认模型绑定器理解的其他格式,则无需使用请求.InputStream
。ASP.NET将解析请求值,您可以使用request[…]
直接访问它们。当然,在ASP.NET MVC中,您甚至不需要使用Request[…]
,因为您可以定义一个视图模型,控制器操作将其作为参数,并让模型绑定器从请求中分配其属性
但是,在某些情况下,您可能希望访问原始请求流。例如,您发明了一些自定义协议,客户端在请求流中发送一些自定义格式的数据。这种情况非常罕见,因为发明定制协议并不常见
现在回到你的问题上来。在您的情况下,可以定义视图模型:
public class MyViewModel
{
public string SomeData { get; set; }
}
控制器操作将以哪个作为参数:
public ActionResult GetSomeData(MyViewModel model)
{
// model.SomeData will contain the Hello string that the client sent
return Json("something");
}
在客户机上,我建议您使用内置于现代浏览器中的JSON.stringify
方法将请求javascript文本JSON序列化为JSON字符串,而不是像您那样手动编写JSON:
$.ajax({
type: 'POST',
url: 'Home/GetSomeData',
data: JSON.stringify({ someData: 'Hello' }),
contentType: 'application/json; charset=utf-8',
success: function (msg) {
alert(msg);
// Insert the returned HTML into the <div>.
$('#dvResult').html(msg);
}
});
$.ajax({
键入:“POST”,
url:'主页/GetSomeData',
data:JSON.stringify({someData:'Hello'}),
contentType:'application/json;charset=utf-8',
成功:功能(msg){
警报(msg);
//将返回的HTML插入到。
$('#dvResult').html(msg);
}
});