Ок: У меня есть UpdatePanel на странице aspx, которая содержит один Placeholder.Код JavaScript внутри UpdatePanel
Внутри этого заполнителя Я добавляю один из элементов пользовательского контроля в зависимости от определенных внешних условий (это страница конфигурации).
В каждом из этих usercontrols есть функция javascript bindUcEvents(), которая связывает различные события jQuery и javascript с кнопками и валидаторами внутри usercontrol.
Проблема, с которой я сталкиваюсь, заключается в том, что javascript usercontrol не распознается. Как правило, javascript внутри обновляемой панели выполняется, когда обновляемая панель отправляется обратно, однако ни один из этих кодов не может быть найден на странице (я попытался запустить эту функцию вручную через консоль firebug, но он говорит мне, что не может найти эту функцию).
Есть ли у кого-нибудь предложения?
Cheers, ред.
EDIT:
вырубить (но функциональный) пример:
Markup:
<script src="/js/jquery-1.3.2.min.js"></script>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="Script" runat="server" />
<asp:Button ID="Postback" runat="server" Text="Populate" OnClick="PopulatePlaceholder" />
<asp:UpdatePanel ID="UpdateMe" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Postback" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Literal ID="Code" runat="server" />
<asp:PlaceHolder ID="PlaceMe" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
C#:
protected void PopulatePlaceholder(object sender, EventArgs e)
{
Button button = new Button();
button.ID = "Push";
button.Text = "push";
button.OnClientClick = "javascript:return false;";
Code.Text = "<script type=\"text/javascript\"> function bindEvents() { $('#" + button.ClientID + "').click(function() { alert('hello'); }); } bindEvents(); </script>";
PlaceMe.Controls.Add(button);
}
Вы увидите, что кнопка не poput предупреждение, даже несмотря на то, что код присутствует на странице.
EDIT2:
Хорошо, просто чтобы понять, код продукции значительно сложнее, чем просто одной функции, связанной на буквальный, и содержит большое количество
<%= Control.ClientID %>
бит код, который будет очень сложно отнести к неспецифическим функциям, и бессмысленно, поскольку каждый из них используется только в одном месте (мы говорим о очень конкретной проверке и нечетном триггете popup + некоторая логика).
Можете ли вы опубликовать часть исходного кода или сгенерированный код? без него это очень трудно диагностировать. – scunliffe
уверен, я просто стараюсь избегать этого, потому что его довольно много, я попытаюсь немного сократить его. –
Вы заявили, что у вас много кода, и поэтому он не находится в коде. .. Так где же это? В aspx? Во внешнем js-файле? Загружается из файла базы данных/xml и считывается кодом позади? – Stobor