在我的服务器页面中,我有:
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script src="../../Scripts/libs/require.js" data-main="../../Scripts/main.js"></script>
<asp:GridView>
...
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton
ID="lb" runat="server"
OnClientClick='<%# string.Format("return onButtonClick({0});", Eval("ProviderId") %>'
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
...
</Columns>
<asp:GridView>
我的main.js看起来像:
require.config({
baseUrl: "../../Scripts",
...
});
require(function () {
function onButtonClick(providerId) {
...
}
});
在main.js中定义的函数在服务器端不可见,即OnClientClick按钮处理程序。此外,我需要将“ProviderId”数据绑定字段作为函数参数传递。
关于如何使这个函数对aspx代码可见的任何想法?
答案 0 :(得分:0)
在ASP中没有经验,但可以假设,将函数导出到全局范围可能会有所帮助。我会尝试这样的事情:
require.config({
baseUrl: "../../Scripts",
...
});
require(function () {
function onButtonClick(providerId) {
...
}
window.onButtonClick = onButtonClick
});
不知道这是否重要,但是: 即使在domReady事件之后,requirejs也需要一些时间来加载所有模块,因此,理论上,该功能可能尚未定义。使用requirejs optimizer可以绕过这个问题。