我有一个模态弹出窗口,当它加载高于浏览器高度的内容时,我无法向下滚动以查看其余信息.相反,背景可以滚动,但弹出窗口不会.
相反,我希望弹出窗口保持不变,当用户向上或向下滚动时,将弹出窗口保留在原位并让它们滚动到内容的底部.如果你在Facebook上发一个超长的帖子,弹出窗口正常工作,我想知道如何用这个控件获得同样的效果.
我正在努力改善我们的一个网站PageSpeed见解得分,在我们徘徊的那一刻90,如果可能的话,我们想要进入90年代中期.
我们遇到的一个难点是,Ajax工具包脚本管理器正在页面顶部生成其脚本,谷歌将此标记为" 应该修复 "问题,并抱怨该脚本是渲染阻止,应该移动到页面底部或异步加载或通过defer属性加载.
我正在使用以下内容将我们的脚本合并到一个.js文件中以最小化请求:
<ajaxToolkit:ToolkitScriptManager ID="manScript" LoadScriptsBeforeUI="false" runat="server" EnableViewState="false" ScriptMode="Release">
<CompositeScript ScriptMode="Release" Path="/CMSGlobalFiles/Js/combinedajax.min.js">
<Scripts>
<asp:ScriptReference Name="WebForms.js" Path="/CMSGlobalFiles/Js/aspnet/WebForms.js" Assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<asp:ScriptReference Name="MicrosoftAjax.js" Path="/CMSGlobalFiles/Js/aspnet/MicrosoftAjax.js" />
<asp:ScriptReference Name="MicrosoftAjaxWebForms.js" Path="/CMSGlobalFiles/Js/aspnet/MicrosoftAjaxWebForms.js" />
</Scripts>
</CompositeScript>
</ajaxToolkit:ToolkitScriptManager>
Run Code Online (Sandbox Code Playgroud)
有没有办法设置defer或获得输出async的CompositeScript标签?或者将其移动到页面底部的任何其他方式?
我尝试过以下方法:
protected override void Render(HtmlTextWriter writer)
{
StringWriter output = new StringWriter();
base.Render(new HtmlTextWriter(output));
string outputAsString = output.ToString();
if(outputAsString.Contains("<script src=\"/CMSGlobalFiles/Js/combinedajax.min.js\" type=\"text/javascript\"></script>"))
{
outputAsString = outputAsString.Replace("<script src=\"/CMSGlobalFiles/Js/combinedajax.min.js\" type=\"text/javascript\"></script>", string.Empty);
}
writer.Write(outputAsString);
}
Run Code Online (Sandbox Code Playgroud)
然后手动在页面底部包含对脚本的引用:
<script …Run Code Online (Sandbox Code Playgroud) 这个问题涉及一个非常具体和常见的场景,其中字典被用于多线程环境中的项目的按需缓存.为了避免线程锁定,最好在同步锁之外测试现有的缓存项,但是如果我们随后必须添加一个项,那么它就算作对字典的写入,因此我在stackoverflow上读到的大多数建议都是你需要锁定读取和写入,因为调用add()可能会改变字典的内部状态.
但是,通过Microsoft的AjaxControlToolkit(scriptObjectBuilder类),代码确实在任何锁之外执行TryGet(),并且只锁定Add()新项到字典.我可以看到,如果放置项目的存储桶在添加后永远不会更改,这可能是怎么可能的,但我怀疑这是错误的,可能是错误的来源.
谢谢.
更新 通过.Net文档我认为所描述的模式确实是错误的.但是我想知道Dictionary的特定实现是否允许它以及AjaxControlToolkit是否依赖于此(这将是可疑的).在检查Reflector中的代码时我很确定这确实是错误的,Dictionary.Resize()方法重新分配桶的数量并移动桶项,因此TryGet()中间的任何线程都可能正在工作在不稳定的数据.
更新 已在codeplex上针对AjaxControlToolkit记录缺陷.看到:
我在AJAX Control Toolkit中遇到了AutoCompleteExtender的问题,我似乎无法深入到底.该控件位于一个asp:Panel中,该工具包链接到ModalPopupExtender.在IE9,FF和Opera的最新一代中,一切都很美妙,但Safari和Chrome中的故障(假设它与WebKit相关).
故障是自动完成的下拉落后于模式弹出窗口,而不是在它前面(由于隐私原因,名称模糊):

查看Firebug中的内容,这是在无序列表中呈现的下拉列表:
<ul id="EmployeeAutoCompleteExtender_completionListElem" class="autoCompleteList" style="width: 281px; visibility: visible; position: absolute; left: 0px; top: 22px; z-index: 1000; ">
Run Code Online (Sandbox Code Playgroud)
autoCompleteList类如下所示:
.autoCompleteList
{
list-style: none outside none;
border: 1px solid buttonshadow;
cursor: default;
padding: 0px;
margin: 0px;
}
Run Code Online (Sandbox Code Playgroud)
模态弹出窗口的结果div如下所示:
<div id="MainContent_AddPeoplePanel" class="modalPopup" style="z-index: 100001; position: absolute; left: 719px; top: 352.5px; opacity: 1; ">
Run Code Online (Sandbox Code Playgroud)
使用以下modalPopup CSS类:
.modalPopup
{
background-color: White;
padding: 10px;
width: 462px;
}
Run Code Online (Sandbox Code Playgroud)
我的假设是列表中较低的z-index导致它落后于div,但是再次,它在非WebKit浏览器中表现得很好.z-index也是内联样式,所以它们显然是直接来自控件.我在这里错过了什么吗?有什么建议?(除了放弃WebForms和AJAX并使用jQuery)
我有一个内容页面,其中包含更新面板和更新进度控件.页面回发时,将正确显示"更新进度"控件.我现在已经向页面添加了一个Modal Popup Extender.从Modal Popup Extender触发回发时,将显示Update Progress控件,但在Modal Popup Extender下面.
如何强制更新进度控件显示在顶部?
asp.net modalpopupextender ajaxcontroltoolkit updateprogress
我试图让AjaxFileUpload--Control(在ContentPage中使用)工作.但它不会OnUploadComplete在服务器端触发事件
我正在使用4.1.60919.0ControlToolkit的版本.我已经尝试了我在互联网上找到的一切.
这里只需几步:
所以,我希望我们能在这个社区中找到一个解决方案.继承我的加价:
<%@ Page Title="New Download" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="NewDownload.aspx.cs" Inherits="Internals_NewDownload" %>
Run Code Online (Sandbox Code Playgroud)
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server">
<ajax:ToolkitScriptManager ID="ToolkitscriptManager" runat="server"> </ajax:ToolkitScriptManager>
<h1>Create a new Download</h1>
<ajax:AjaxFileUpload ID="FileUpload" runat="server" ThrobberID="ThrobberLabel" OnUploadComplete="FileUpload_UploadComplete" />
<asp:Label ID="ThrobberLabel" runat="server" Style="display: none;"><img alt="UploadingPicture" title="Please wait while uploading..." src='<%= Constants.DomainString + "/Data/Images/loading-small.gif" %>' /></asp:Label>
<asp:Label ID="DownloadLabel" runat="server"></asp:Label>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
这是我的CodeBehind:
using System;
using …Run Code Online (Sandbox Code Playgroud) 我有一个标准的AjaxFileUpload控件
<asp:AjaxFileUpload ID="upManager" CssClass="fileUpload" runat="server" OnUploadComplete="upManager_UploadComplete" />
Run Code Online (Sandbox Code Playgroud)
而不是他们必须按上传,我只是希望文件一旦选择文件就自动上传.有没有办法做到这一点?
我有一个CheckBoxList控件,其中包含动态生成的复选框项.此复选框列表将包含用户名.我正在使用AjaxControlToolkit中的Gravatar控件来允许用户拥有自己的个人资料图片.我想要的是当一个带有用户名作为文本的复选框添加到CheckBoxList时,还应该在复选框之前或之后添加Gravatar控件,显示用户的相应显示图片.我想到的另一种方法是使用复选框和gravatar来设置自定义用户控件.但如果有任何其他精简和简单的解决方案可用,那么请建议我.以下是代码:
<table class="style1">
<tr>
<td align="right" style="padding: 5px" width="25%">
Username/Email:</td>
<td style="padding: 5px">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" CssClass="newButton"
onclick="Button1_Click" Text="Search" />
</td>
</tr>
<tr>
<td align="right" style="padding: 5px" valign="top" width="25%">
Results:</td>
<td style="padding: 5px">
<asp:CheckBoxList ID="CheckBoxList1" runat="server"
onselectedindexchanged="CheckBoxList1_SelectedIndexChanged"
AutoPostBack="True">
</asp:CheckBoxList>
</td>
</tr>
<tr>
<td align="right" style="padding: 5px" width="25%" valign="top">
Selected People:</td>
<td style="padding: 5px">
<asp:ListBox ID="ListBox1" runat="server" Height="149px" Width="260px">
</asp:ListBox>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
如您所见,它还有一个列表框,其中包含checkboxlist中的选定项目.如果可能的话,请为列表框建议我.
<%@ Page Language="C#" MasterPageFile="~/master/111.master" AutoEventWireup="true" CodeFile="Template.aspx.cs" Inherits="_Template" Title="Untitled Page" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit.HTMLEditor" TagPrefix="cc1" %>
<asp:Content ID="Content3" ContentPlaceHolderID="cphhead" Runat="Server">
<script type="text/javascript" src="../css-js/jquery-1.8.3.min.js"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cphcontent" Runat="Server">
<cc1:Editor ID="Editor1" Width="1028px" Height="300px" runat="server" SuppressTabInDesignMode="true" ActiveMode="Design" />
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="cphFooterJS" Runat="Server">
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
我尝试使用命名空间添加母版页ajax html编辑器,但我有这个错误: System.Web.HttpException:无法修改Controls集合,因为控件包含代码块(即<%...%>).
怎么解决?谢谢你的回答.
我有一个使用文本框,自动完成扩展程序和autocompletedropdownpanel运行的网站.基本上,当用户开始在文本框中键入名称时,结果会在几秒钟内显示.由于可能有数百行,我需要一个滚动条.然后使用只选择名称.出于某种原因,它现在已经坏了(也许用IE更新?因为它在Chrome中工作正常)现在当用户使用滚动条时它会自动关闭结果并且无法进行选择.我无法在网上找到解决方案.我需要使用更新的ajax套件吗?如果是这样,我该怎么做呢?或者我可以添加或更改我的代码吗?
更新:我发现此问题仅出现在Surface Pro平板电脑上.所以使用IE11和平板电脑会导致这种情况.即使平板电脑与普通的键盘和鼠标对接.
是否可以使用cancelBubble函数为带滚动条的下拉面板?我有一个问题,当点击滚动条滚动抛出行后,鼠标被释放,结果关闭.从阅读我认为我需要某种cancelBubble事件或停止传播
<asp:Panel ID="autocompleteDropDownPanel" runat="server"
ScrollBars="Auto" Height="200px" Font-Size="Medium"
HorizontalAlign="Left" Wrap="False" />
<asp:AutoCompleteExtender ID="AutoCompleteExtender" runat="server"
DelimiterCharacters="" Enabled="True" ServicePath="AutoComplete.asmx"
ServiceMethod="GetCompletionList" TargetControlID="DoctorNameTextBox"
UseContextKey="true" ContextKey="StateDropDown"
CompletionListElementID="autocompleteDropDownPanel"
onclientitemselected="getSelected"
ShowOnlyCurrentWordInCompletionListItem="True" CompletionInterval="100"
MinimumPrefixLength="2">
</asp:AutoCompleteExtender>
Run Code Online (Sandbox Code Playgroud) asp.net ×8
ajax ×2
c# ×2
html ×2
.net ×1
autocomplete ×1
c#-4.0 ×1
css ×1
dictionary ×1
file-upload ×1
gravatar ×1
javascript ×1
master-pages ×1
sizing ×1
vb.net ×1