Jquery用脚本附加MVC PartialView

时间:2015-10-22 19:34:11

标签: javascript jquery asp.net-mvc razor asp.net-mvc-partialview

我有javascript函数,它将PartialView附加到div中。一切正常,但PartialView包含一些<script></script>脚本。 jQuery没有找到那些动态附加的函数 - Uncaught ReferenceError: getIDc4 is not defined

我的JS功能

var url = '@UrlHelper.GetFullUrl("Inventories/GetFilterRow")'; //this returns partial view
        $.ajax({
            type: 'POST',
            data: { aRef: aRef },
            url: url,
            success: function(data) {
                $('.filter').append($(data)[0]);
                var script = document.createElement('script');
                script.type = 'text/javascript';
                script.src = url;
            }
        });

和部分视图

...
@{
    int id = Model != null ? Model.Id : 1;
}

<div id="@Html.Raw("FilterCondition" + id)">
...
...
...

    @{
        string getIdcFunction = string.Format("getIDc{0}", id);
    }
    <script>
        @{
            @:function  
                @getIdcFunction<text>() {
            var grid = $("@Html.Raw("#field"+id)").data("kendoDropDownList");
            var item = grid.value();
            return { IDc: item };
        }
            </text>
        }
    </script>

</div>

如何让这些动态附加功能正常工作?

当我使用

页面加载生成局部视图时
@Html.Partial("GetFilterRow", new {Id = 1})
一切正常。唯一的问题是当这个视图通过jquery和ajax来支持时。然后找不到那些功能。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您有几个我知道的选项。选项一是在主视图中包含您的脚本,并设置awk '/OBJECT1/ {p=1}; p; $0=="REPLACE" {p=0}' objlist.txt > obj1list.txt awk '$0=="OBJECT1" {p=1}; p; $0=="REPLACE" {p=0}' objlist.txt > obj1list.txt cat objlist.txt | sed -n '/OBJECT1/p;/REPLACE/q' > obj1list.txt 或您尝试调用以调用该功能的任何事件。

例如,在您的主视图中有:

onclick

在你的部分视图中有:

function floorSelect(clickedFloor) {
         doStuff;
         }

注意 <ul class="dropdown-menu" role="menu" aria-labeledby="dropDownSelectFloor"> @For i As Integer = 0 To Model.ListOfFloors.Count - 1 @<li role="presentation"><a id="ddListSelectFloor" class="ddListSelectFloor" onclick="floorSelect(this)" role="menuitem" tabindex="-1"> @Model.ListOfFloors(i)</a> </li> Next </ul> 从主视图中调用脚本。

选项编号2是通过onClick附加脚本(您也可以将此操作添加到id

像这样:

class

答案 1 :(得分:0)

1.将局部视图中的脚本放入scripts.js文件中。 2.将部分视图附加到div后使用$.getscripts('path of scripts.js')