0

UserControl.ascx という名前の Web ユーザー コントロールがあり、値を返す JavaScript 関数 'GetValues()' がその ascx ページに埋め込まれています。ascx ページを dll にコンパイルし、それを別の Web アプリケーションで使用しました。しかし、Web アプリケーションからユーザー コントロール JavaScript 関数を呼び出そうとすると、'GetValues' を示す JS Debugger が未定義のエラーになります。この問題を解決する方法はありますか?

ASCX ファイル:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ICEImage.ascx.cs" Inherits="ICEImage" %>
   <div>                 
         <asp:TextBox ID="txtValue" runat="server" BackColor="#FFFFC0" ReadOnly="True" Width="150px" 
   </div>
<script type="text/javascript">
function GetValue()
{
  return parseInt(document.getElementById('<%=txtValue.ClientID%>').value);
}
</script>

ASPX ファイル:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="ASP" Assembly="App_Web_iceimage.ascx.cdcab7d2" Namespace="ASP" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Sample Page</title>
</head>
<body style="background-color: #383838">
    <form id="form1" runat="server">
    <ASP:iceimage_ascx ID="ICEImage1" runat="server"></ASP:iceimage_ascx>  
    <button id="btnSave" style="width: 85px; height: 29px" type="button" onclick="GetValue()">Save</button>          
    </form>
</body>  
</html>
4

1 に答える 1

0

このようなサーバーコードから関数を定義し、たとえばこれをPage_PreRenderに追加できます。

if (!Page.ClientScript.IsClientScriptBlockRegistered("FunctionGetValue"))
        {
            string script = @"function GetValue() {
                   return parseInt(document.getElementById('"+txtValue.ClientID+"').value);
                   }";
            ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "FunctionGetValue", script, true);

        }
于 2012-12-11T10:37:23.563 に答える