2015-08-13 96 views
8

我有一個公共靜態方法,並且如果選擇某些值,我希望顯示一條消息。這是在ASP.NET中,所以添加using System.Windows.Forms;會導致問題,因爲我正在使用using System.Web.UI.WebControls;。那麼如何創建一條消息?如何在公共靜態void方法中創建消息框

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); 
     } 
} 

調用Web方法:

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

你是否搜索了一下?我在這裏發現了一些關於此的帖子。 – SuperOli

+0

@SuperOli是的我有搜索,但我找不到解決方案 – user123456789

+1

好的,那麼下次請列出你在帖子中試過的東西。 – SuperOli

回答

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>"); 
     } 
    }   
} 
+0

導致錯誤:錯誤2496名稱'ClientScriptManager'在當前上下文中不存在 – user123456789

+0

是否真的aspx.cs頁面 – shreesha

+0

它是一個ascx.cs頁面 – user123456789

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); 
} 
1

更改您的業務方法拋出一個異常時,出現錯誤的條件,像這樣:

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

並處理你的JavaScript函數中的錯誤,如t他的:

function OnUpdateFail(result) { 
    alert(result.get_message()); 
} 
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警告任何消息,你的WebMethod得到OnUpdateSuccess function

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

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