【问题标题】:How to call a non-static method from aspx如何从 aspx 调用非静态方法
【发布时间】:2016-10-25 15:31:34
【问题描述】:

我的 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) 

当它为真时运行它,这些方法在数据库中更新并打印一张票(首先读取一个网格检查项目)

【问题讨论】:

  • 请详细说明问题。为什么需要从后面的代码中访问页面组件?您到底想访问什么?为什么不将所需的任何值传递给 BlockAction 方法?
  • 继续前进。我们在 2016 年。使用 WebAPI!
  • 我知道老了,真的很想更新到新技术。

标签: javascript c# asp.net json ajax


【解决方案1】:

如果您尝试更新 UI 控件或读取它们的值,那么您所描述的是 UpdatePanel 控件。页面 webmethod 不能更新任何控件和刷新 UI(除非通过 JavaScript)。如果你想异步更新页面的状态,UpdatePanel 就是你要找的。​​p>

【讨论】:

    【解决方案2】:

    如果您只是因为不想刷新页面而尝试使用 javascript,请选择更新面板。您的问题的答案是“不”,您不能像您想要的那样访问非静态方法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多