Qu'est-ce que Request.InputStream et quand l'utiliser?
Question est très simple. Qu'est-ce que Request.InputStream
et quand l'utiliser. Est-il toujours utilisé pour lire l'intégralité du corps html envoyé dans la requête post ou seulement certains paramètres envoyés? Pourquoi devrais-je pas envoyer de données en tant que paramètre de mon côté serveur code en le passant dans la requête Ajax?
Dans l'exemple que je peux passer le paramètre dans la data:
ou je peux lire le paramètre dans la Request.InputStream
. Quand dois-je utiliser lequel?
Exemple:
Dans le contrôleur:
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");
}
Requête 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);
}
});
source d'informationauteur Asdfg
Vous devez vous connecter pour publier un commentaire.
Request.InputStream
vous permet d'accéder à la demande brute de données. Si ces données sont formatées à l'aide de certains format standard commeapplication/x-www-form-urlencoded
oumultipart/form-data
ou d'un autre format que le modèle par défaut de liant comprend que vous n'avez pas besoin d'utiliserRequest.InputStream
. ASP.NET va analyser les valeurs de demande et vous serez en mesure d'y accéder directement à l'aide deRequest[...]
. Bien sûr, dans ASP.NET MVC vous n'avez même pas besoin d'utiliserRequest[...]
parce que vous pouvez définir une vue de modèle de votre contrôleur de l'action prendra en paramètre et quitter le modèle de classeur affecter ses propriétés à partir de la demande.Il y a des cas bien lorsque vous souhaitez accéder à la demande brute de flux. Par exemple, vous avez inventé des protocole personnalisé et le client envoie quelques données mises en forme dans la demande de flux. Ces cas sont très rares depuis l'invention des protocoles personnalisés, n'est pas très commun.
Maintenant, revenons à votre question. Dans votre cas, vous pouvez définir un modèle de vue:
qui votre contrôleur de l'action prendra comme argument:
et sur le client, je vous recommande de vous à l'aide de la
JSON.stringify
méthode qui est nativement intégré dans les navigateurs modernes en JSON sérialiser la demande javascript littérale dans une chaîne JSON au lieu de l'écriture manuelle de l'JSON comme vous l'avez fait: