Простой Модальный Всплывающий Пример Не Работает
Это был простой модальный всплывающий пример, предоставленный онлайн в CodeProject Рахманом Масудуром (ссылка: ASP.NET AJAX Control Toolkit ModalPopupExtender Control in Action[^]) 4 апреля 2009 года. Не могу заставить его работать (ошибок нет, но ничего не происходит, хотя кажется, что страница подчиняется). Есть идеи?
<%@ Page Language="VB" aspcompat="true" Debug="true" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> <html> <style type="text/css"> .ModalPopupBG { background-color: #666699; filter: alpha(opacity=50); opacity: 0.7; } .HellowWorldPopup { min-width:200px; min-height:150px; background:white; } </style> <body> <form id="frm_FileUpload" runat="server"> <asp:scriptmanager id="ScriptManager1" runat="server"> <asp:button id="Button1" runat="server" text="Button" /> <cc1:modalpopupextender id="ModalPopupExtender1" runat="server" cancelcontrolid="btnCancel" okcontrolid="btnOkay" targetcontrolid="Button1" popupcontrolid="Panel1" popupdraghandlecontrolid="PopupHeader" drag="true" backgroundcssclass="ModalPopupBG"> <asp:panel id="Panel1" style="display: none" runat="server"> <div class="HellowWorldPopup"> <div class="PopupHeader" id="PopupHeader">Header</div> <div class="PopupBody"> <p>This is a simple modal dialog</p> </div> <div class="Controls"> <input id="btnOkay" type="button" value="Done" /> <input id="btnCancel" type="button" value="Cancel" /> </div> </div> </form> </body> </html>
Я нашел две вещи:
а) после нажатия клавиши F12 и просмотра отладчика я получаю ошибку JavaScript: "невозможно получить свойство 'UI' неопределенной или нулевой ссылки" и выделил строку кода:
$создание(представление sys.Продлевается.Пользовательского интерфейса.ModalPopupBehavior, {"BackgroundCssClass":"ModalPopupBG","CancelControlID":"btnCancel","Drag":true,"OkControlID":"btnOkay","PopupControlID":"Panel1","PopupDragHandleControlID":"PopupHeader","dynamicServicePath":"/popup.aspx","id":"ModalPopupExtender1"}, нуль, нуль, $получить("кнопка 1"));
Б) и что мой web.config может быть причиной некоторых проблем, поэтому я заменил его на значение по умолчанию, предоставленное Visual Web Developer 2008. Вот копия моего web.config:
<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> </sectionGroup> </sectionGroup> </sectionGroup> </configSections> <appSettings/> <connectionStrings/> <system.web> <!-- Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development. Visual Basic options: Set strict="true" to disallow all data type conversions where data loss can occur. Set explicit="true" to force declaration of all variables. --> <compilation debug="false" strict="false" explicit="true"> <assemblies> <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> </assemblies> </compilation> <pages> <namespaces> <clear /> <add namespace="System" /> <add namespace="System.Collections" /> <add namespace="System.Collections.Generic" /> <add namespace="System.Collections.Specialized" /> <add namespace="System.Configuration" /> <add namespace="System.Text" /> <add namespace="System.Text.RegularExpressions" /> <add namespace="System.Linq" /> <add namespace="System.Xml.Linq" /> <add namespace="System.Web" /> <add namespace="System.Web.Caching" /> <add namespace="System.Web.SessionState" /> <add namespace="System.Web.Security" /> <add namespace="System.Web.Profile" /> <add namespace="System.Web.UI" /> <add namespace="System.Web.UI.WebControls" /> <add namespace="System.Web.UI.WebControls.WebParts" /> <add namespace="System.Web.UI.HtmlControls" /> </namespaces> <controls> <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </controls> </pages> <!-- The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. --> <authentication mode="Windows" /> <!-- The <customErrors> section enables configuration of what to do if/when an unhandled error occurs during the execution of a request. Specifically, it enables developers to configure html error pages to be displayed in place of a error stack trace. <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules> </system.web> <system.codedom> <compilers> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v3.5"/> <providerOption name="OptionInfer" value="true"/> <providerOption name="WarnAsError" value="false"/> </compiler> </compilers> </system.codedom> <!-- The system.webServer section is required for running ASP.NET AJAX under Internet Information Services 7.0. It is not necessary for previous version of IIS. --> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <remove name="ScriptModule" /> <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </modules> <handlers> <remove name="WebServiceHandlerFactory-Integrated"/> <remove name="ScriptHandlerFactory" /> <remove name="ScriptHandlerFactoryAppServices" /> <remove name="ScriptResource" /> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </handlers> </system.webServer> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Все теги находятся в небольшом регистре здесь, в опубликованном коде. Но ... ASP.NET чувствителен к регистру. Итак, сделайте дело правильным при использовании элементов управления. Я думаю, что это проблема.
swabygw
Спасибо за ответ, Тадит дэш. Я изменил "scriptmanager" на "ScriptManager", "button" на "Button", "panel" на "Panel" и "modalpopupextender" на "ModalPopupExtender". Но результат тот же. Может быть, я что-то пропустил? Сработал ли этот код для вас, изменив регистр на элементах управления?
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Я не пытался сделать это со своей стороны. Я сейчас не свободен, поэтому не могу проверить.
Теперь посмотрите окно консоли инструмента разработчика, есть ли какие-либо ошибки в списке или нет.
swabygw
Я добавил ошибку JavaScript и копию моего web.config в исходный вопрос. Спасибо.
swabygw
Спасибо за ответ, Тадит дэш. Я изменил "scriptmanager" на "ScriptManager", "button" на "Button", "panel" на "Panel" и "modalpopupextender" на "ModalPopupExtender". Но результат тот же. Может быть, я что-то пропустил? Сработал ли этот код для вас, изменив регистр на элементах управления?
Sampath Lokuge
Когда вы ставите комментарий для чужого комментария,используйте его собственную кнопку "ответить".В противном случае он его не оповестит. :(
swabygw
Вижу - обойдется.
PJ003
Попробуйте проверить наличие ошибок скрипта в "консоли инструментов разработчика" в вашем браузере (например, F12 в Chrome и IE).
Sunasara Imdadhusen
Где находится ваш серверный код?
swabygw
Код в исходном вопросе-это код на стороне сервера (код в файле .aspx). Спасибо.
swabygw
Я добавил ошибку JavaScript и копию моего web.config в исходный вопрос. Спасибо.
karthik Udhayakumar
Попробуйте заменить asp:ScriptManager на ajaxtoolkit:toolkitscriptmanager