如何从aspx调用非静态方法

时间:2016-10-25 15:31:34

标签: javascript c# asp.net json ajax

我在我的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;
        }
    }

我想在确认为真时调用这两种方法。

更新: 需要访问这样的两种方法:

 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时运行它,这些方法在数据库中更新并打印票证(首先阅读网格检查项目)

2 个答案:

答案 0 :(得分:0)

如果您尝试更新UI控件或读取其值,那么您所描述的是UpdatePanel控件。页面webmethod无法更新任何控件并刷新UI(除非通过JavaScript)。如果要更新页面的异步状态,可以使用UpdatePanel。

答案 1 :(得分:0)

如果您因为不想刷新页面而尝试使用javascript,请转到更新面板。你的问题的答案是“没有&#39;你不能像你想要的那样访问非静态方法。

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