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

use*_*789 8 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
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

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);
        }
}
Run Code Online (Sandbox Code Playgroud)

调用Web方法:

[WebMethod]
public static void UpdateSerialQtyRcvdUserControl(int SerNoID, int QtyRcvd)
{
     JobDeliveryDebrief.UpdateSerialQtyRcvd(SerNoID, QtyRcvd);
}
Run Code Online (Sandbox Code Playgroud)

shr*_*sha 7

添加JavaScript alert:

clientscriptmanager.registerstartupscript(this.GetType(),"MyAlert","<script>alert('Hello');</script>",true);
Run Code Online (Sandbox Code Playgroud)

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

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>");
        }
    }        
}
Run Code Online (Sandbox Code Playgroud)