Comme le titre l'indique, je veux définir une section dans une vue partielle.
Mon code avec lequel j'ai testé est le suivant:
Manette:
public ActionResult Test()
{
return View();
}
public ActionResult PartialTest()
{
return PartialView("_PartialTest");
}
Test.cshtml:
@{
ViewBag.Title = "Test";
}
<h2>Test</h2>
@Html.Action("PartialTest")
_PartialTest.cshtml:
<p>partial Test</p>
@section scripts {
<script type="text/javascript">
$(document).ready(function() {
alert("Test");
});
</script>
}
Placer la section scripts
dans le Test.cshtml fonctionne très bien donc le problème n'est pas dans la mise en page.
Quelqu'un sait-il comment faire ça?
Les vues partielles ne prennent pas en charge @section
tag. Vous devez les ajouter dans la vue qui fait référence à la vue partielle. Consultez cette question pour plus d'informations: Injection de contenu dans des sections spécifiques à partir d'une vue partielle ASP.NET MVC 3 avec Razor View Engine .
Cela revient essentiellement au fait que la vue principale référençant un partiel devrait être responsable de l'inclusion de Javascript, pas la vue partielle elle-même.
Je sais que cette question est super dépassée, mais pour tous ceux qui pourraient se demander (comme moi):
Vous pouvez réellement contourner ce problème en modifiant le @section scripts { }
partie de vos vues partielles à ceci:
@using (Html.BeginScriptContext())
{
Html.AddScriptBlock(
@<script type="text/javascript">
//rest of script
);
}
Cela vous permettra d'avoir un script dans votre vue partielle et d'obtenir cette structure de type widget. J'espère que cela t'aides!