Вызов функции JavaScript управления пользователем из приложений, использующих JavaScript

У меня есть пользовательский веб-элемент управления с именем UserControl.ascx и функция JavaScript GetValues() для возврата некоторого значения, встроенного в эту страницу ascx. Я скомпилировал страницу ascx в dll и использовал ее в другом веб-приложении. Но теперь проблема заключается в том, что когда я пытался вызвать функцию JavaScript пользовательского управления из веб-приложения, отладчик JS показывает «GetValues» как неопределенную ошибку. Есть ли способ решить эту проблему?

в файле 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>

person Senan    schedule 11.12.2012    source источник


Ответы (1)


Вы можете определить свою функцию из кода сервера и добавить ее, например, на 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);

        }
person Boriss Pavlovs    schedule 11.12.2012
comment
Нет, мне нужно вызвать функцию из блока JavaScript веб-приложений. Является ли это возможным ? - person Senan; 11.12.2012
comment
Не могли бы вы опубликовать немного больше вашего кода? И как вы включаете свой элемент управления на веб-страницу (Регистрация из aspx или LoadControl из кода)? - person Boriss Pavlovs; 11.12.2012
comment
Использование директивы регистрации. %@ Регистрация TagPrefix=ASP Assembly=App_Web_iceimage.ascx.cdcab7d2 Namespace=ASP %› - person Senan; 11.12.2012
comment
Но мой пример, как объявить функцию в управлении ascx. Вы можете вызвать эту функцию из своего веб-приложения, и она вернет значение, потому что оно будет присутствовать на странице. - person Boriss Pavlovs; 11.12.2012
comment
В чем причина использования блока скриптов из ascx? - person Boriss Pavlovs; 11.12.2012
comment
давайте продолжим это обсуждение в чате - person Boriss Pavlovs; 11.12.2012