自定义JQuery Bundle,MVC5

时间:2014-05-19 14:58:09

标签: jquery asp.net-mvc

我有一个简单的MVC表单,为此我试图找一小块JQuery来确定是否选中了复选框。我已经在包中注册了我的JS(Sender.js):

    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"));
    }

我在视图中注册了它:

<body>
   @Scripts.Render("~/bundles/Sender")    
</body>

现在,有两件事,1)脚本根本不工作,2)脚本似乎在div中注册:

rendered java script

这是我第一次尝试MVC,我确信我错过了一些明显的东西,但可以看到它。

有人能指出我正确的方法让我的js文件工作。 Basicall,它应该做的就是隐藏或显示一个文本框,如果选中了复选框AML。

修改 Bundle output

修改

这是整个视图

@model BTSanctions.UserAdmin.Models.EditSenderViewModel
@{
   ViewBag.Title = "Edit";
}

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


<h2>Edit</h2>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Add a new Sender</h4>
        <hr />
        @Html.ValidationSummary(true)


        <div class="form-group">
            @Html.LabelFor(model => model.AML, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.AML)
                @*@Html.ValidationMessageFor(model => model.MatchPercentage)*@
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.MatchPercentage, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.MatchPercentage)
                @Html.ValidationMessageFor(model => model.MatchPercentage)
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    </div>
}

1 个答案:

答案 0 :(得分:1)

Word&#34; Scripts&#34;由于某些原因,我经常弄乱浏览器,我有同样的问题。 所以我按F12来实际查看是否正在调用特定的js。如果有

~Script / example.js ---&gt; 404 html错误代码然后它意味着javascript没有在浏览器中呈现。

所以这就是我解决这个问题的方法

<强> **************************解*************

  1. 将Scripts文件夹重命名为Js
  2. Virtaul Path name&#34; Sender&#34;在Jquery Bundle中必须 NOT 匹配实际的文件名&#34; Sender.Js&#34;这样做会使编译器混淆呈现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. Jquery Bundle渲染后,所有脚本都必须在head标签内..

    &lt; --- head ---&gt;

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

    &LT; ---- /头-----&GT;