Bundle JQuery personnalisé, MVC5

J’ai un simple formulaire MVC, pour lequel j’essaie de corriger un petit morceau de JQuery pour déterminer si une case à cocher est activée ou non. J’ai enregistré mon fichier JS (Sender.js) dans le lot en tant que tel:

public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.validate*")); bundles.Add(new ScriptBundle("~/bundles/Sender").Include( "~/Scripts/Sender.js")); } 

et je l’ai enregistré à mon avis comme tel:

  @Scripts.Render("~/bundles/Sender")  

Maintenant, deux choses, 1) les scripts ne fonctionnent pas du tout, et 2) le script semble s’inscrire dans une div:

rendu de script java

Ceci est ma première tentative de MVC, et je suis sûr qu’il me manque quelque chose d’évident, mais je peux le voir.

Quelqu’un peut-il me diriger dans le bon sens pour obtenir mon fichier js au travail. Tout ce qu’il faut faire, c’est de masquer ou d’afficher une zone de texte si la case AML est cochée.

MODIFIER Bundle de sortie

MODIFIER

Voici la vue complète

 @model BTSanctions.UserAdmin.Models.EditSenderViewModel @{ ViewBag.Title = "Edit"; } @Scripts.Render("~/bundles/Sender") 

Edit

@using (Html.BeginForm()) { @Html.AntiForgeryToken()

Add a new Sender


@Html.ValidationSummary(true)
@Html.LabelFor(model => model.AML, new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.AML) @*@Html.ValidationMessageFor(model => model.MatchPercentage)*@
@Html.LabelFor(model => model.MatchPercentage, new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.MatchPercentage) @Html.ValidationMessageFor(model => model.MatchPercentage)
}

Le mot “Scripts” souvent dérangé par le navigateur pour une raison quelconque, j’avais le même problème. donc je frappe F12 pour voir si le JS particulier est appelé. s’il y a

~ Script / example.js —> Code d’erreur 404 html, cela signifie que le javascript n’est pas restitué dans le navigateur.

c’est donc ce que j’ai fait pour contourner ce problème

**************************Solution*************

  1. Renommer le dossier Scripts en Js
  2. Le nom de chemin Virtaul “Sender” dans Jquery Bundle ne doit PAS correspondre au nom de fichier “Sender.Js” car cela rendrait le compilateur confus pour restituer le code javascript.

     bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Js/jquery-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include( "~/Js/jquery-ui-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/Senderval").Include( "~/Js/Sender.js")); 
  3. Tous vos scripts doivent être dans la balise head après Jquery Bundle pour être rendu poing.

    <--- tête --->

      @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryval") @Scripts.Render("~/bundles/Senderval") 

    <---- / head ----->