La fonction .hide dans ma vue partielle n'est pas rendue pour la deuxième et la troisième personne initialement, alors les retards .hide et .fadein ne fonctionneront pas non plus. Je suis nouveau sur js et jquery, donc il me manque probablement quelque chose d'évident ... Pourquoi ce script js ne fonctionnerait-il pas à l'intérieur d'une vue partielle?Fonction jQuery ne fonctionnant pas dans MVC Vue partielle
Tout fonctionne quand tout est dans la vue principale, mais la raison pour laquelle j'ai besoin d'une vue partielle est parce que je ne veux pas recharger la page entière toutes les 15 secondes. J'ai fait quelques recherches et il pourrait y avoir quelque chose de mal à obtenir un type de données html?
Vue principale:
@model IEnumerable<project.Models.MyList>
<div id="scrolllist">
@Html.Partial("_ScrollList")
</div>
@section Scripts{
<script>
function loadScrollListPV() {
$.ajax({
url: "@Url.Action("ScrollList")",
type: 'GET', // <-- make a async request by GET
dataType: 'html', // <-- to expect an html response
success: function(result) {
$('#scrolllist').html(result);
}
});
}
$(function() {
loadScrollListPV();
// re-call the functions each 15 seconds
window.setInterval("loadScrollListPV()", 15000);
});
</script>
}
action Contrôleur:
public ActionResult ScrollList()
{
return PartialView("_ScrollList", db.MyList.ToList());
}
Vue partielle:
@model IEnumerable<project.Models.MyList>
<div id="firstperson">
@*Get lastest record and display.*@
@foreach (var donor in Model.OrderByDescending(p => p.ProcessTime).Take(1))
{
}
</div>
<div id="secondperson">
@*Get second lastest record and display.*@
@foreach (var donor in Model.OrderByDescending(p => p.ProcessTime).Skip(1).Take(1))
{
}
</div>
<div id="thirdperson">
@*Get third lastest record and display.*@
@foreach (var donor in Model.OrderByDescending(p => p.ProcessTime).Skip(2).Take(1))
{
}
</div>
@section Scripts{
<script>
$("#secondperson").hide();
$("#thirdperson").hide();
function person() {
$("#firstperson").delay(5000).hide(0, function() {
$("#secondperson").fadeIn();
$("#secondperson").delay(5000).hide(0, function() {
$("#thirdperson").fadeIn();
$("#thirdperson").delay(5000).hide(0, function() {
$("#firstperson").fadeIn();
person();
});
});
});
}
</script>
}
Toute aide serait génial et merci d'avance!
Votre raison d'utiliser une vue partielle est défectueux. Votre gestionnaire de succès ajax remplace seulement le contenu de '# scrolllist', donc avec ou sans vue partielle vous ne rechargez pas la page. En outre, la vue partielle est rendue (insérée dans) le flux html.Il n'y a pas de différence de balisage en ce qui concerne le navigateur. Peut-être confondez-vous la vue partielle de MVC avec UpdatePanel de WebForm. –
@adiga merci! J'ai mis en œuvre et fonctionne très bien. – Alex
Scripts NE JAMAIS aller en partiels. Et '@section Scripts {' n'est pas pris en charge dans les partiels de toute façon –