Ответ 1
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);
}
});