ClientScript在方法类中不可用

本文关键字:方法 ClientScript | 更新日期: 2023-09-27 18:24:57

我有一个类有这个搜索方法。我的问题是,一个类不支持客户端脚本。只有当我把它放在网页中时,它才会起作用。帮助另一种方法是什么?顺便说一句,我会在我的网页上调用这个方法。

 public void SearchAffectedUser()
    {
      //some code here
    if (dr.Read())
      {
        //some code here
      }
   else
     {
      this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", "<script type='"text/javascript'">alert('Record Not Found. Please try again');</script>");
     }

ClientScript在方法类中不可用

您可以从该方法向网站的调用方方法返回boolean

public void SearchAffectedUser()
    {
    if (dr.Read())
      {
         //return true ;   
      }
   else
     {
       //return false;
     }

boolean的基础上,您可以显示弹出窗口。

您可以将Page对象传递给该方法:

public void SearchAffectedUser(Page page)
{
  //some code here
  if (dr.Read())
  {
      //some code here
  }
  else
  {
      page.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", "<script type='"text/javascript'">alert('Record Not Found. Please try again');</script>");
  }
}

但在我看来,这不是最好的方法。我会这样做:创建一个方法来完成一些工作并返回一个值(可能是bool或更复杂的值),并在页面类方法中处理注册脚本。

public bool SearchAffectedUser(Page page)
{
  //some code here
  if (dr.Read())
  {
      //some code here
  }
  else
  {
      return false;
  }
  return true;
}
//inside your Page class
protected void Page_Load(object sender, EvetArgs e)
{
   //logic
   if (!obj.SearchAffectedUser())
   {
      this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", "<script type='"text/javascript'">alert('Record Not Found. Please try again');</script>");
   }
}

当然,这只是一个标记,但我希望你能看到我试图在这里显示的内容:)

ClientScript属于Page类。因为web表单是从Page类派生的,所以您可以在那里找到它。

首先,如果这只是一个业务层类,那么在这个项目中使用web引用不是一个好主意。如果仅从Page类派生此类,则可以使用ClientScript。