J'ai une liste déroulante avec l'ID de sélection StaffId. Ce que je fais, c'est qu'une fois un élément est sélectionné, je veux passer le StaffId au contrôleur pour récupérer les enregistrements dans une base de données en utilisant le staffId. Cela donne une erreur sur le chargement de la page sans passer le StaffId au contrôleur. ci-dessous est l'extraitMVC5 Ajax mise à jour
contrôleur
[HttpPost]
public PartialViewResult GetStaffPosts(int? id)
{
var sPost = db.StaffPosts.Where(a => a.StaffId == id.Value);
return PartialView(sPost.ToList());
}
<div id="divPartialView">
@{Html.RenderPartial("GetStaffPosts");}
</div>
<script type="text/javascript">
$(document).ready(function() {
$("#StaffId").change(function (event) {
var options = {};
options.url= "/StaffPost/GetStaffPosts/" + $(this).val(),
options.data= { id: $(this).val() },
options.cache= false,
optionstype= "POST",
options.dataType= "html",
options.success= function (data, textStatus, XMLHttpRequest) {
$("#divPartialView").html(data); // HTML DOM replace
$.ajax(options);
}
});
});
</script>
Pouvez-vous ajouter votre code de contrôleur ici? – hasan
Pourquoi utilisez-vous HttpPost au lieu de HttpGet, Vous essayez d'obtenir des données à partir de DB, dans ce cas vous devriez utiliser [HttpGet]. et je recommanderais d'utiliser la méthode jquery load pour analyser votre vue partielle avec les données db dans l'élément html cible – hasan