Comment ajouter un script en vue partielle dans MVC4?

C'est le code que j'ai dans ma vue partielle

@model Contoso.MvcApplication.Models.Exercises.AbsoluteArithmetic

@using(Html.BeginForm())
{
<div>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">@Model.Number1</span>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">+</span>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">@Model.Number2</span>
    <span style="width: 110px; float:left; text-align:center; font-size:2.5em;">=</span>
    <span>
            @Html.EditorFor(model => model.Result)
            @Html.ValidationMessageFor(model => model.Result)
    </span>
</div>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

veuillez noter qu'au bas de mon code, j'ai un @section , et j'ai réalisé qu'il ne fonctionne pas si j'y mets un point de rupture. Si je déplace cette ligne dans le _Layout.cshtml il fonctionne bien, mais ce n'est pas l'idée.

Comment puis-je dire à MVC4 dans une vue partielle de rasoir que je veux ajouter cette bibliothèque?

34
demandé sur Darf Zon 2013-01-02 00:48:54

7 réponses

vous pouvez utiliser @Scripts.Render("~/Scripts/my-script.js") for .fichiers js et @Styles.Render("~/Content/my-Stylesheet.css") pour les fichiers css.

Nb: il travaille pour un faisceau particulier aussi plus de détails - http://www.asp.net/mvc/overview/performance/bundling-and-minification "

il fonctionne sur n'importe quelles sous-pages dans le rasoir y compris les vues partielles. pour plus d'informations, google pour l'utilisation de ces helpers

11
répondu Nishanth Shaan 2016-10-19 17:35:04

vous ne pouvez pas rendre des sections de mise en page à partir d'une partie. Déplacez la définition de la section vers la page ou la mise en page principale.

9
répondu viperguynaz 2013-01-01 21:49:54

découvrez ma réponse Comment rendre une Section dans une Vue Partielle , qui vous permet de définir des Scripts et des Styles dans n'importe quelle vue/vue partielle. Il prend également soin de les dupliquer.

mon avis personnel est que les sections ne sont pas une bonne solution pour les styles et javascript inclut .

5
répondu Erik Philips 2017-05-23 12:34:43

il n'y a pas de solution commune pour cette question, mais vous pouvez faire les façons les plus simples suivantes:

1) vous pouvez créer un ensemble de méthode d'extension comme suit:

https://stackoverflow.com/a/6671766/5208058

2) Il suffit de déplacer vos codes javascript dans une vue partielle séparée et sur votre vue principale, rendre 2 vues partielles. Un pour la vue partielle principale et le autre pour vos scripts comme suit:

{
    // markup and razor code for Main View here

    @Html.Partial("Main_PartialView")
}

@section Scripts
{
    @Html.Partial("JavaScript_PartialView")
}

J'espère que ça aidera.

3
répondu Varan Sinayee 2017-05-23 10:31:30

vous pouvez ajouter le script directement à la fin de la vue partielle html, sans la section script (parce que la section script n'est pas rendue dans les vues partielles)

<script language="javascript">
   // Your scripts here
   // ....
</script>
2
répondu Pila 77 2017-12-06 13:08:40

cela a fonctionné pour moi me permettant de colocaliser JavaScript et HTML pour une vue partielle dans le même fichier pour faciliter la lisibilité

en vue qui utilise une vue partielle appelée " _MyPartialView.cshtml "

<div>
    @Html.Partial("_MyPartialView",< model for partial view>,
            new ViewDataDictionary { { "Region", "HTMLSection" } } })
</div>

@section scripts{

    @Html.Partial("_MyPartialView",<model for partial view>, 
                  new ViewDataDictionary { { "Region", "ScriptSection" } })

 }

en vue partielle

@model SomeType

@{
    var region = ViewData["Region"] as string;
}

@if (region == "HTMLSection")
{


}

@if (region == "ScriptSection")
{
        <script type="text/javascript">
    </script">
}
1
répondu purvin 2017-01-12 13:24:26

cette page de débordement a fourni une solution complète à cette question: en utilisant des sections dans L'éditeur / afficheur modèles

TL; DR: il suffit d'ajouter le Forloop.Htmlhelpers nuget package https://www.nuget.org/packages/Forloop.HtmlHelpers / à votre projet pour vous permettre D'exécuter Javascript à partir de vues partielles rasoir et des modèles dans ASP.NET MVC. J'ai personnellement utilisé ceci avec mon projet MVC 5.

0
répondu James Porter 2017-05-23 12:03:04