如何在public static void方法中创建消息框

时间:2015-08-13 13:57:44

标签: c# asp.net static-methods messagebox

我有一个公共静态方法,如果选择了某些值,我希望显示一条消息。这是在ASP.NET中,因此添加using System.Windows.Forms;会导致问题,因为我使用的是using System.Web.UI.WebControls;。那么如何创建消息?

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd)
{
     if (SerNo.QtyRcvd != 1)
     {
         if (SerNo.Reason == "")
         {
             //message
         }
     }
}

Javascript behing代码:

function UpdateSerialQtyRcvd(sender, SerNoID, QtyRcvd) {
        if (QtyRcvd < 0) {
            alert("Qty Rcvd must be greater than 0");
        }
        else {
            PageMethods.UpdateSerialQtyRcvdUserControl(SerNoID, QtyRcvd, OnUpdateSuccess, OnUpdateFail);
        }
}

调用网络方法:

[WebMethod]
public static void UpdateSerialQtyRcvdUserControl(int SerNoID, int QtyRcvd)
{
     JobDeliveryDebrief.UpdateSerialQtyRcvd(SerNoID, QtyRcvd);
}

5 个答案:

答案 0 :(得分:7)

添加JavaScript alert

clientscriptmanager.registerstartupscript(this.GetType(),"MyAlert","<script>alert('Hello');</script>",true);

要在静态方法中使用ClientScript,请将Page对象作为参数传递给静态方法。Page不是static class。您不能在静态方法中调用非静态字段。因此,您需要将页面对象作为参数传递给静态方法。

protected void Page_Load(object sender, EventArgs e)
{
     UpdateSerialQtyRcvd(SerNoID, QtyRcvd,Page);
}

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd,Page page)
{
    if (SerNo.QtyRcvd != 1)
    {
        if (SerNo.Reason == "")
        {
            page.ClientScript.RegisterStartupScript(page.GetType(),"alert", "<script>alert('Hai');</script>");
        }
    }        
}

答案 1 :(得分:1)

此方法显示一条消息。 UpdateSerialQtyRcvd根据您的需要位于WebUserControl.ascx

public static void UpdateSerialQtyRcvd(System.Web.UI.Page pg)
{
     pg.ClientScript.RegisterStartupScript(pg.GetType(), "alert", "<script>alert('Message');</script>");
}

现在您可以像这样添加if-statement

public static void UpdateSerialQtyRcvd(System.Web.UI.Page pg, int qtyRcvd)
{
     if (qtyRcvd != 1)
     {
          //if (SerNo.Reason == "")
          //{
                pg.ClientScript.RegisterStartupScript(pg.GetType(), "alert", "<script>alert('Message');</script>");
          //}
     }
}

现在,您可以从已注册UpdateSerialQtyRcvd的每个页面调用WebUserControl.ascx 静态方法。像这样:

YourPage.aspx

<%@ Register Src="~/WebUserControl2.ascx" TagPrefix="uc1" TagName="WebUserControl2" %>
<uc1:WebUserControl2 runat="server" id="WebUserControl2" />

YourPage.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    WebUserControl2.UpdateSerialQtyRcvd(this,2);
}

答案 2 :(得分:1)

更改业务方法,以便在出现错误情况时抛出异常,如下所示:

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd)
{
     if (SerNo.QtyRcvd != 1)
     {
         if (SerNo.Reason == "")
         {
             throw new Exception("Your message");
         }
     }
}

并处理javascript函数中的错误,如下所示:

function OnUpdateFail(result) {
    alert(result.get_message());
}

答案 3 :(得分:1)

使用ScriptManager.RegisterStartupScript(this, GetType(), "Message", "alert('Message');", true);

答案 4 :(得分:0)

您可以从静态webmethod返回所需的消息。并在客户端使用Javascript警报发送警报消息。

将webmethod的返回类型更改为字符串

[WebMethod]
public static string UpdateSerialQtyRcvdUserControl(int SerNoID, int QtyRcvd)
{
    return JobDeliveryDebrief.UpdateSerialQtyRcvd(SerNoID, QtyRcvd);
}

将UpdateSerialQtyRcvd的返回类型更改为字符串

public static void UpdateSerialQtyRcvd(int SerNoID, int QtyRcvd)
{
     if (SerNo.QtyRcvd != 1)
     {
         if (SerNo.Reason == "")
         {
             //message
             return "message";
         }
     }
}

在Javascript中提醒您从OnUpdateSuccess function

中的webmethod获得的任何消息
 function UpdateSerialQtyRcvd(sender, SerNoID, QtyRcvd) {
            if (QtyRcvd < 0) {
                alert("Qty Rcvd must be greater than 0");
            }
            else {
               PageMethods.UpdateSerialQtyRcvdUserControl(SerNoID, QtyRcvd, OnUpdateSuccess, OnUpdateFail);
            }
    }