我的网站位于.net framework 2.0中。我正在使用javascript提供的警报和确认对话框。
我面临的问题是,当弹出警报框时,背景变为空白,用户无法查看他/她正在工作的内容。
虽然确认对话框没有发生同样的情况。由于我的应用程序是2.0,我无法为此找到合适的解决方案。
现在我的问题是为什么确认对话框显示背景但警报不是,我将做出哪些更改,以便我可以在警报框的情况下查看背景?
以下是代码段:
当我使用下面的确认对话框时,我可以查看背景信息:
btnDeleteGroup.Attributes.Add("onclick","javascript:return confirm('Are you sure you want to delete this group?');");
btnTemplateDelete.Attributes.Add("onclick","javascript:return confirm('Are you sure you want to delete this template?');");
以下是警告对话框的代码。我希望当我的列表为空时弹出警告框:
private void AddRecipients(String text, ListBox listBox)
{
ListItemCollection items = new ListItemCollection();
AddRecipientToList(text, items);
// No matching recipients
if (items.Count == 0)
{
BrowserMessage("There are no users or groups with this name");
return;
}
// Exactly one match found
if (items.Count == 1)
{
listBox.Items.Add(items[0]);
return;
}
}
BrowseMessage函数定义如下:
public void BrowserMessage(string Message)
{
Message = Message.Replace("\"", "'").Replace(@"\", @"\\").Replace("\n", @"\n");
OutputJavascript("alert(\""+ Message + "\");");
}
并且OutputJavascript定义为:
public void OutputJavascript(String script)
{
ScriptBlock js = new ScriptBlock(this);
js.AddScript(script);
js.Register();
}
如果上述问题需要任何额外信息,请与我们联系。
这是设计代码。当用户单击添加接收按钮
时,需要弹出警报<DIV
STYLE="DISPLAY: inline; Z-INDEX: 100; LEFT: 8px; WIDTH: 72px; POSITION: absolute; TOP: 8px; HEIGHT: 21px"
MS_POSITIONING="FlowLayout">Subject</DIV>
<DIV
STYLE="DISPLAY: inline; Z-INDEX: 104; LEFT: 8px; WIDTH: 72px; POSITION: absolute; TOP: 64px; HEIGHT: 21px"
MS_POSITIONING="FlowLayout">Message</DIV><asp:image id="Image1" style="Z-INDEX: 106; LEFT: 368px; POSITION: absolute; TOP: 72px" runat="server" ToolTip="Required field" ImageUrl="..\images\redLed.gif"></asp:image><asp:image id="Image2" style="Z-INDEX: 107; LEFT: 304px; POSITION: absolute; TOP: 40px" runat="server" ToolTip="Required field" ImageUrl="..\images\redLed.gif"></asp:image></DIV>
<DIV CLASS="groupbox"
STYLE="Z-INDEX: 110; LEFT: 8px; WIDTH: 328px; POSITION: absolute; TOP: 56px; HEIGHT: 248px"
MS_POSITIONING="GridLayout"><asp:ListBox id="lbRecipients" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 56px" tabIndex="3" runat="server" Width="312px" CssClass="formtextbox" EnableViewState="False" Height="153px" SelectionMode="Multiple">
</asp:ListBox>
**<asp:Button id="btnRecipientAdd" style="Z-INDEX: 102; LEFT: 216px; POSITION: absolute; TOP: 32px" runat="server" Width="102px" CssClass="formbutton" CausesValidation="False" Text="Add Recipient" EnableViewState="False"> </asp:Button>**
以下是生成的HTML
<script language='javascript'>
function TabStrip1_Click(index)
{
var f=document.forms[0];
f['TabStrip1_Index'].value=index;
f.submit();
}
</script>
<script language="Javascript"><!--
alert("There are no users or groups with this name");//--></script>
<script language="javascript"><!--
function showMessage(postValue)
{
var f=document.forms[0];
f.__MESSAGENUMBER.value=postValue;
f.submit();
}
//--></script>
<script language="javascript"><!--
function saveRecipients()
{
listSaveContents('lbRecipients', '__RECIPIENTS');
}
//--></script>
<script language="javascript"><!--
function addRecipient(sText,sValue)
{
var op=gE('lbRecipients').options;
op[op.length]=new Option(sText,sValue);
}
答案 0 :(得分:0)
你的cs似乎是输出javascript警报的一种非常奇怪的方式...试试这个:
public void BrowserMessage(string Message)
{
Message = Message.Replace(@"\", @"\\").Replace("\n", @"\n");
OutputJavascript(Message);
}
public void OutputJavascript(String message)
{
string output = @"<script language='javascript'> alert('"+message+"');</script>";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "UserPopup", output);
}
答案 1 :(得分:0)
您正在进行回发以生成此消息,然后在重新加载时将其呈现到页面中。它是直接内联呈现的,而不是作为方法呈现,因此在页面加载时调用它。因此,当浏览器解析用于渲染的页面时遇到alert
,它显示alert
,并在进一步解析和渲染时暂停。
你可能最好只将它作为标签放在你的收件人框下面,然后只需将信息放入并在回发中将其涂成红色。