当我的主视图呈现具有自己的脚本的部分视图时,“'$'未定义”,将发生错误

时间:2014-05-07 16:10:42

标签: javascript jquery asp.net-mvc razor partial-views

我的问题是我的部分视图中有脚本会引发以下错误: -

SCRIPT5009: '$' is undefined 
Server, line 336 character 9

我有以下主视图,它将呈现PartialView: -

@model IPagedList<TMS.Models.TMSRack>

<div><span class="b"> There are @Model.TotalItemCount Racks.</span></div>
@Html.Partial("_PagedRackTable2",Model)
<i class=" icon icon-blue icon-star-on "></i> IT360 Data
    @section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
        $(document).ready(function () {
            $("#DCSort").click(function () {
                //$("#iconSort1").hide();
                $("#progressSort1").show();

                $.ajax({
                    type: "Get",
                    url: "@Url.Action("Index","Rack")",

                    data: { searchTerm: "@ViewBag.searchTerm.ToString()", page: "1", sort: "@ViewBag.DCSortPam", pagesize: $("#FilterSize").val() },

                    success: successFunc,
                    error: errorFunc
                });

                function successFunc(data, status) {     
                    $("#RackTable").html(data);
                    $("#progressSort1").hide();
                    //$("#iconSort1").Show();
                }

                function errorFunc() {
                    alert('error');
                }
            })

        });
    </script>

_PagedRackTable2部分视图如下所示: -

@model IPagedList<TMS.Models.TMSRack>
<div id ="RackTable">
    <script type="text/javascript">
        $(document).ready(function () {
            $("#DCSort").click(function () {
                //$("#iconSort1").hide();
                $("#progressSort1").show();

                $.ajax({
                    type: "Get",
                    url: "@Url.Action("Index","Rack")",

                    data: { searchTerm: "@ViewBag.searchTerm.ToString()", page: "1", sort: "@ViewBag.DCSortPam", pagesize: $("#FilterSize").val() },
                    //contentType: "application/json; charset=utf-8",
                    //dataType: "json",
                    //cache: false,
                    success: successFunc,
                    error: errorFunc
                });

                function successFunc(data, status) {
                    $("#RackTable").html(data);
                    $("#progressSort1").hide();
                    //$("#iconSort1").Show();
                }

                function errorFunc() {
                    alert('error');
                }
            })
         });
    </script>
    <div class="SmallDropDown3 b" >

错误发生在;我首先渲染主视图,它将渲染patrial视图并发生错误。如果我直接返回局部视图(例如在执行一些分页之后),则局部视图上的脚本不会引发任何错误。

我对此问题的指示如下: -

  1. 在我的布局视图中,我指定在@section Scripts {内运行脚本,因此在呈现主视图时,部分视图脚本将在从布局视图调用Jquery之前运行,因为在我的布局视图中渲染主体后,脚本将运行如下: -
  2.   

    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    
    @Scripts.Render("~/bundles/jqueryui")
    
    @Scripts.Render("~/bundles/custome")
    
    @RenderSection("scripts", required: false)
    

    但是当我进行分页时,Jquery文件已经被加载,并且部分视图Scripts不会引发错误。

    为了解决这个问题,我将部分视图脚本复制到我的主视图,如上所示(相同的脚本被添加两次),这将允许我的脚本始终运行,但我仍然会得到关注的错误主视图渲染局部视图时的局部视图脚本。

    SCRIPT5009: '$' is undefined 
    Server, line 336 character 9
    

    有人可以建议我如何克服这个问题吗?

    由于

0 个答案:

没有答案