使用jQuery从ASP.NET向用户显示消息
在ASP.NET中开发各种web应用程序时,我发现自己需要在执行各种操作后将消息发送回用户。例如,文件已成功上载或数据库记录已更新。另外,如果有错误,我想通知用户 到目前为止,我一直在创建包含要向用户显示的消息的服务器端变量,然后使用ASP.NET标签控件(最初隐藏,但在回发时可见)来显示消息。这很好,但是我真的希望在模式jQuery窗口中显示一些消息,这样我可以确保他们看到消息使用jQuery从ASP.NET向用户显示消息,jquery,asp.net,Jquery,Asp.net,在ASP.NET中开发各种web应用程序时,我发现自己需要在执行各种操作后将消息发送回用户。例如,文件已成功上载或数据库记录已更新。另外,如果有错误,我想通知用户 到目前为止,我一直在创建包含要向用户显示的消息的服务器端变量,然后使用ASP.NET标签控件(最初隐藏,但在回发时可见)来显示消息。这很好,但是我真的希望在模式jQuery窗口中显示一些消息,这样我可以确保他们看到消息 有人能提出一些框架或技术来完成这项任务吗?谢谢。最简单的方法之一是使用并让客户端检查页面方法,以查看是否有任何消息要
有人能提出一些框架或技术来完成这项任务吗?谢谢。最简单的方法之一是使用并让客户端检查页面方法,以查看是否有任何消息要显示。但是,这将使用soap类型的对象调用。如果您想使用一个更为restfull的解决方案,我建议您使用wcf get服务并执行定时检查,或者使用回调作为通知客户机的方式
这两个选项都将提供您所需的数据,但我会先尝试页面方法,因为它的实现时间较短。目前最好的方法是将ajax与asp.net mvc3框架和razor结合使用,后者实现了一个称为无结构javascript的概念。
请参阅以了解演练 我更喜欢有一个hiddenfield,我用Javascript检查它的值。如果存在一个certian值,那么我将显示我的模态。我仍然使用该标签进行显示。当它调用模式弹出窗口时,将隐藏字段值重置为null。我确信pros的答案是实现您要求的最正确的方法。 但是,如果你像我一样,并没有真正完全理解答案,看看我的简单解决方案 在我加载的一个类中——最肯定的是在代码中,您可以放置这样一个子类
Public Shared Sub messageBox(ByVal SimpleSingleLineString As String)
System.Web.HttpContext.Current.Response.Write("alert(""" & SimpleSingleLineString & """);" & vbNewLine)
End Sub
当您需要相对简单地显示来自任何aspx代码的弹出窗口时
Catch ex As Exception
messageBox("We apologise but we could not connect to the help servers at this moment. Please try again in 1 to 5 minutes. Error 100")
End Try
我已加载jQuery。我不记得是否必须加载它,但肯定需要存在JAVASCRIPT支持
这些是ASP页面,我不会加载任何其他类或在任何地方附加任何其他.js文件
我这样做是因为我习惯于在VB应用程序中显示messagebox.show(“…”)
编辑
然而,每次从另一个页面调用时,该代码总是在服务器端呈现。像服务。所以调用页面会动态地获取代码、html、JAVASCRIPT。。等等。它可能需要稍微修改一下。调用页面将其作为脚本附加
<script src="localhost/help.aspx" type="text/javascript"></script>
我在页面上使用jquery插件和一些扩展方法,如下所示:
/// <summary>
/// Shows the errors.
/// </summary>
/// <param name="page">The page.</param>
/// <param name="text">The text.</param>
public static void ShowError(this Page page, string text)
{
ShowNotification(page, NotificationType.Error, text, false);
}
/// <summary>
/// Shows the information.
/// </summary>
/// <param name="page">The page.</param>
/// <param name="text">The text.</param>
public static void ShowInformation(this Page page, string text)
{
ShowNotification(page, NotificationType.Information, text, true);
}
/// <summary>
/// Shows the errors.
/// </summary>
/// <param name="page">The page.</param>
/// <param name="text">The text.</param>
public static void ShowNotification(this Page page, NotificationType notificationType, string text, bool autoClose)
{
string className = null;
switch (notificationType)
{
case NotificationType.Error:
className = "fail";
break;
case NotificationType.Information:
className = "notification";
break;
case NotificationType.Success:
className = "success";
break;
}
string notification = "jQuery('body').showMessage({'thisMessage':['" + text.Replace(Environment.NewLine, "','") + "'],'className':'" + className + "','autoClose':" + autoClose.ToString().ToLower() + ",'delayTime':4000,'displayNavigation':" + (!autoClose).ToString().ToLower() + ",'useEsc':" + (!autoClose).ToString().ToLower() + "});";
if (RadAjaxManager.GetCurrent(page) != null)
{
RadAjaxManager.GetCurrent(page).ResponseScripts.Add(notification);
}
else
{
if (ScriptManager.GetCurrent(page) != null)
{
ScriptManager.RegisterStartupScript(page, page.GetType(),
"notification",
notification,
true);
}
else
{
page.ClientScript.RegisterStartupScript(page.GetType(),
"notification",
notification,
true);
}
}
}
/// <summary>
/// Shows the notifications.
/// </summary>
/// <param name="page">The page.</param>
/// <param name="text">The text.</param>
public static void ShowSuccess(this Page page, string text)
{
ShowNotification(page, NotificationType.Success, text, true);
}
}
//
///显示错误。
///
///这一页。
///文本。
公共静态无效错误(此页,字符串文本)
{
ShowNotification(页面,NotificationType.Error,text,false);
}
///
///显示信息。
///
///这一页。
///文本。
公共静态无效显示信息(此页面,字符串文本)
{
ShowNotification(页面,NotificationType.信息,文本,true);
}
///
///显示错误。
///
///这一页。
///文本。
公共静态void ShowNotification(此页面,NotificationType NotificationType,字符串文本,布尔自动关闭)
{
字符串className=null;
开关(notificationType)
{
案例通知类型。错误:
className=“失败”;
打破
案例通知类型。信息:
className=“通知”;
打破
案例通知类型。成功:
className=“成功”;
打破
}
string notification=“jQuery('body').showMessage({'thisMessage':['”+text.Replace(Environment.NewLine,“,”+”),'className':“+className+”,'autoClose':“+autoClose.ToString().ToLower()+”,'delayTime':4000,'displayNavigation':“+(!autoClose.ToString().ToLower()+”,'useEsc':“+(!autoClose.ToString().ToLower());”;
if(RadAjaxManager.GetCurrent(第页)!=null)
{
RadAjaxManager.GetCurrent(第页).ResponseScripts.Add(通知);
}
其他的
{
if(ScriptManager.GetCurrent(第页)!=null)
{
ScriptManager.RegisterStartupScript(第页,第页.GetType(),
“通知”,
通知,
正确的);
}
其他的
{
page.ClientScript.RegisterStartupScript(page.GetType(),
“通知”,
通知,
正确的);
}
}
}
///
///显示通知。
///
///这一页。
///文本。
公共静态void ShowSuccess(此页面,字符串文本)
{
ShowNotification(页面,NotificationType.Success,文本,true);
}
}
它并不完美,但它能满足我的要求,它很简单,所有东西都在一个地方。使用iFrame或AJAX请求。模式窗口不同于警报框。是的,但这个概念可以改变。因为你在回答中提到了“Java”:概念上-语法相同+1,我喜欢它!简单易懂,就像你指出的,一切都在一个地方。谢谢