J'ai créé une vue et un contrôleur, le contrôleur que je veux retourner quelques résultats de recherche. J'appelle le contrôleur en utilisant jqueryPasser un paramètre à un contrôleur en utilisant jquery ajax
<input type="text" id="caption" />
<a href="#" id="search">Search</a>
<script>
$("#search").click(function() {
alert('called');
var p = { Data: $('#search').val() };
$.ajax({
url: '/Ingredients/Search',
type: "POST",
data: JSON.stringify(p),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data);
},
error: function() {
alert("error");
}
});
});
Mon contrôleur ressemble à ceci
[HttpPost]
public ActionResult Search(string input)
{
var result = _db.Ingredients.Where(i => i.IngredientName == input);
return new JsonResult() {Data = new {name="Hello There"}};
}
Mon problème est que je ne suis pas sûr de savoir comment obtenir le varible de mon appel jquery dans le contrôleur, je mets un point d'arrêt sur le contrôleur et son touché mais la chaîne d'entrée est toujours nulle.
Qu'ai-je fait de mal?
Correct. Pour expliquer: si votre variable en C# et le champ utilisé dans l'élément JSON que vous passez ont le même nom, ils seront automatiquement liés les uns aux autres. Donc si vous voulez changer la propriété JSON en '{captionvalue: $ ('# caption'). Val()}', vous devrez aussi renommer la variable de votre fonction en 'captionvalue'. Juste quelques explications afin que vous compreniez pourquoi cela fonctionne :-) – Flater