내 서버 페이지에는 다음이 있습니다.
<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 코드에 표시하는 방법에 대한 아이디어가 있습니까?
ASP에 대한 경험은 많지 않지만 전역 범위로 함수를 내보내는 것이 트릭을 할 수 있다고 가정 할 수 있습니다. 나는 다음과 같은 것을 시도 할 것입니다.
require.config({
baseUrl: "../../Scripts",
...
});
require(function () {
function onButtonClick(providerId) {
...
}
window.onButtonClick = onButtonClick
});
이것이 중요한지는 모르지만 : requirejs가 모든 모듈을로드하는 데 domReady 이벤트 이후에도 약간의 시간이 걸리므로 이론적으로 함수가 아직 정의되지 않았을 수 있습니다. 의 사용 최적화 requirejs 이 문제를 우회 할 수있다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다