如何从aspx调用非静态方法

本文关键字:静态方法 调用 aspx | 更新日期: 2023-09-27 18:14:55

我在aspx页面后面的代码中有一个方法,我需要从Javascript调用两个方法,我遇到的问题是,我试图用Json请求和WebMethod来做,但这个方法必须是静态的,页面组件和其他方法不能从这个方法访问。

我正在尝试这样做:

javascript函数

function Func(Value) {
        var conf=confirm('Sure? '+valor)
        if (conf==true)
        {
        BlockAction();
        }
    }
       function BlockAction() {     
                 $.ajax({
                 type: "POST",
                 url: 'frmVentaTelefonica.aspx/BlockAction',
                 data: "",
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 success: function (msg) {
                     $("#divResult").html("success");
                 },
                 error: function (e) {
                     $("#divResult").html("Something Wrong.");
                 }
             })}; 

后台代码:

   [WebMethod]                               
    public static  void BlockAcction()
    {
        try
        {
            frmVentaTelefonica venta = new frmVentaTelefonica();    
            venta.ConsultarVentaTelefonica();
            venta.ImprimirTiquetes();
        }
        catch (Exception e)
        {                
            throw;
        }
    }

我想在confirm为true时调用这两个方法。

更新:需要像这样访问两个方法:

 public void ConsultarVentaTelefonica()
        {
            DatosImpresion = new List<Impresion>();
            IServicioVentas servicioVentas;
            servicioVentas = SATWebServiceLocator<IServicioVentas>.ObtenerServicio();
            string Tiquetes = string.Empty;
            foreach (GridDataItem dataItem in gridInfoVentaTelefonica.MasterTableView.Items)
            {
                if ((dataItem.FindControl("CheckBox1") as CheckBox).Checked)
                {
                    Tiquetes = Tiquetes + (dataItem["Tiquete"]).Text + ",";
                }
            }
            Tiquetes = Tiquetes.TrimEnd(Tiquetes[Tiquetes.Length - 1]);
            Tiquetes = " " + Tiquetes + " ";
            DataSet dsResultado = servicioVentas.EntregaTelefonica(sessionR8A.Turno.IdTurno, Tiquetes);
            if (dsResultado.Tables.Count > 0 && dsResultado.Tables[0].Rows.Count > 0) 

当为true时运行它,这些方法在数据库中更新并打印票据(首先读取网格选中的项目)

如何从aspx调用非静态方法

如果你试图更新UI控件,或者读取它们的值,那么你所描述的就是UpdatePanel控件。一个网页方法不能更新任何控件和刷新UI(除非通过JavaScript)。如果你想异步更新页面的状态,UpdatePanel就是你要找的。

如果你正在尝试javascript只是因为你不想刷新页面,然后去更新面板。你的问题的答案是"不",你不能像你想的那样访问非静态方法。

它只支持静态方法的原因是页面实例化没有完成,如果你想使用非静态web方法,那么就去web service(.asmx)