Request.InputStream
позволяет получить доступ к необработанным данным запроса.Если эти данные отформатированы с использованием какого-либо стандартного формата, например application/x-www-form-urlencoded
или multipart/form-data
, или другого формата, который, как понимает механизм связывания модели по умолчанию, вам не нужно использовать Request.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
метод, встроенный в современные браузеры для JSON-сериализации запроса javascript литерал в строку 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);
}
});