ClientScript在方法类中不可用

时间:2013-07-26 07:09:09

标签: c# asp.net

我有一个具有此搜索方法的类。我的问题是,A类不支持客户端脚本。它只有在我将它放在网页中才有效。救命!另一种方法是做什么。顺便说一下,我将在我的网页上调用此方法。

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

3 个答案:

答案 0 :(得分:0)

您可以将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>");
   }
}

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

答案 1 :(得分:0)

您可以将此方法的boolean值返回到网站的来电方式

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

基于boolean,您可以显示弹出窗口。

答案 2 :(得分:0)

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

首先,如果这只是一个业务层类,那么在这个项目中使用Web引用并不是一个好主意。如果只从Page类派生此类,那么您将能够使用ClientScript。