我有一个公共静态方法,如果选择了某些值,我希望显示一条消息。这是在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);
}
答案 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
function UpdateSerialQtyRcvd(sender, SerNoID, QtyRcvd) {
if (QtyRcvd < 0) {
alert("Qty Rcvd must be greater than 0");
}
else {
PageMethods.UpdateSerialQtyRcvdUserControl(SerNoID, QtyRcvd, OnUpdateSuccess, OnUpdateFail);
}
}