Vue partielle question - jQuery non défini
Je suis confronté à jQuery chargement de la question dans un ASP.NET MVC 5 projet. Je suis en train de charger une vue partielle j'ai donc utilisé
@Html.Action("GetView", "Maison")
Vue partielle contient quelques fonctions jQuery. Quand il est chargé, il montre jQuery non défini message, mais jQuery est de travailler sur la page principale.
J'ai donc essayé deux autres méthodes pour charger la vue partielle et il n'y a pas de problème de jQuery avec ces méthodes
@Html.Partial("_viewname")
@Ajax.BeginForm()
Maison Contrôleur
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GetView(string id = "")
{
return PartialView("_ViewName");
}
}
_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
@Scripts.Render("~/bundles/modernizr")
@RenderSection("Head", false)
</head>
<body>
<section >
<div>
@RenderBody()
</div>
<div>
@RenderSection("Sidebar", false)
</div>
</section>
<!-- jQuery -->
@Scripts.Render("~/bundles/jquery")
@RenderSection("Scripts", false)
</body>
Parent De La Page D'Index.cshtml
@{
ViewBag.Title = "Admin";
}
<div id="main_content">
@Html.Action("GetView", "Packages")
</div>
Vue partielle _view.cshtml
<div class="row">
<div class="col-sm-12">
<select>
<option>1</option>
<option>2</option>
</select>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("select").addClass("form-control");
});
</script>
Je pense qu'il y a quelques jQuery chargement de problème, mais je ne comprends pas pourquoi ce qui se passe à l'action.
Merci de me suggérer une solution pour ce problème.
- Où est la page qui contient le rendu de la vue partielle?
- pouvez-vous la vue partielle et le parent afficher le code?
- Inclure les scripts de votre partielles
- en plus de vérifier si le jquery est chargé à l'aide de firebug
- Votre jQuery est rendue à la fin du corps, assurez-vous que tous les scripts dans votre vue partielle sont à l'intérieur de vos Scripts, section ou autre jQuery n'est pas chargé lorsque vous essayez de l'utiliser.
- Mise à jour de la quesion..
- Avez-vous trouvez une solution ?
Vous devez vous connecter pour publier un commentaire.
Votre point de vue (pas vues partielles) besoin d'inclure le code dans un
@section Scripts
bloc. Comme vous l'avez souligné@section
s ne fonctionnent pas dans les Vues Partielles.Assurer votre code dans la vue parent est dans l'un comme ceci:
La
@section
directive indique à la vue builder où insérer ce bloc dans la page maître. Avec Javascript, vous avez besoin de l'avoir toujours dans les Scripts de l'article, ou il sera rendu inline où il a été déclaré.L'alternative est de déplacer l'inclusion de jQuery avant
RenderBody()
appels dans la page principale:La mise en cache du navigateur liés à l'utilisation de faisceaux signifie seulement le premier chargement de la page sera un tout petit peu inefficace sur votre site.
Si vous devez exécuter des scripts sur une vue partielle, comme c'est le cas lorsque créés dynamiquement le contenu est renvoyé lors de l'appel de vues partielles d'un appel AJAX, vous devriez trouver que le problème décrit dans la question ne se produit sur la mère de chargement de la page. Si c'est le cas, vous pouvez contourner le problème en PAS chargement partiel sur la première vue. Au lieu de cela, vous pouvez charger la vue partielle à l'aide de JQuery APRÈS le chargement initial de la page.
Donc, au lieu de le faire en ligne avec le code HTML sur la vue primaire:
Ce faire, dans un .fichier js ou au sein de votre primaire en vue de la balise javascript:
Ce travail autour de vous permettra d'exécuter côté client JQuery code sur le primaire de la vue ET de la vision partielle.