web-dev-qa-db-fra.com

ASP MVC Define Section in Partial View

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?

22
Jeandre Pentz

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.

39
Henk Mollema

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!

6
k1234