使用jQuery从ASP.NET向用户显示消息

使用jQuery从ASP.NET向用户显示消息,jquery,asp.net,Jquery,Asp.net,在ASP.NET中开发各种web应用程序时,我发现自己需要在执行各种操作后将消息发送回用户。例如,文件已成功上载或数据库记录已更新。另外,如果有错误,我想通知用户 到目前为止,我一直在创建包含要向用户显示的消息的服务器端变量,然后使用ASP.NET标签控件(最初隐藏,但在回发时可见)来显示消息。这很好,但是我真的希望在模式jQuery窗口中显示一些消息,这样我可以确保他们看到消息 有人能提出一些框架或技术来完成这项任务吗?谢谢。最简单的方法之一是使用并让客户端检查页面方法,以查看是否有任何消息要

在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,我喜欢它!简单易懂,就像你指出的,一切都在一个地方。谢谢