1

これは私のユーザー コントロール example.ascx です

 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="add.ascx.cs" Inherits="WebApplication3.add" %>

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<link rel="Stylesheet" href="style.css" />


<script type="text/javascript">
function toDo()
{
//Do something
};
</script>


<asp:TextBox ID="txt_name" onkeydown="toDo()" runat="server" CssClass="input_txt">   </asp:TextBox>

ページを読み込んでユーザー コントロールをページに追加すると、Java スクリプト関数をまったく呼び出すことができません。エラーは次のとおりです。

Java スクリプト関数 toDo が未定義です。それは本当に私を疲れさせました:(

アップデート***

私のユーザーコントロールは、コードによってページに追加されます。ユーザーコントロールをページに追加するサーバー側のコードは次のとおりです。

 protected void lnk_new_Click(object sender, EventArgs e)
    {
        add add_view = LoadControl("add.ascx") as add;
        Panel pnl_view = (Panel)ContentPlaceHolder1.FindControl("pnl_view");
        pnl_view.Controls.Clear();
        pnl_view.Controls.Add(add_view);

    }

そして、これは私が得たエラーです: エラーのスクリーンショット

4

2 に答える 2

1

私はあなたが何をしているのか分かりません!これは、javascript 関数 toDo() を持つユーザー コントロールのマークアップです。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="add.ascx.cs" Inherits="add" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<link rel="Stylesheet" href="style.css" />

<script type="text/javascript">
    function toDo() {
        alert("This worked!");
    };
</script>
<asp:TextBox ID="txt_name" onkeydown="toDo()" runat="server" CssClass="input_txt">   </asp:TextBox>

ここに私の実装ページがあります:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<%@ Register src="add.ascx" tagname="add" tagprefix="uc1" %>

<!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></title>   

</head>
<body>
    <form id="form1" runat="server">
    <div>

        <uc1:add ID="WebUserControl1" runat="server" />

    </div>
    </form>
</body>
</html>

そして、テキスト ボックスで任意のキーを押すと、toDo() 関数からメッセージを受け取ります。

ここに画像の説明を入力

したがって、提供されたコードに問題はありません。

于 2013-08-04T02:03:24.510 に答える
0

問題は、ユーザー コントロールが追加されたときに、ユーザー コントロール内の関数が存在しないことでした。同じ Java スクリプト関数をマスター ページのヘッド セクションに追加すると、機能しました。その例外の理由はまだわかりませんが、欲しいものは手に入れました。

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebApplication3.Site" %>

 <!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></title>
<link rel="Stylesheet" href="style.css" />

<script type="text/javascript">
  function toDo() {
      alert("HAHAH");
  };
</script>
</head>
于 2013-08-04T07:49:31.957 に答える