我有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来支持时。然后找不到那些功能。
感谢您的帮助。
答案 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')
。