尝试捕获静态函数asp.net

时间:2016-06-20 04:58:38

标签: javascript jquery asp.net highcharts alert

我尝试显示错误消息

我在网格视图中有一个链接按钮..i当我点击这个链接按钮并且这个静态函数时调用highcharts ..通过这个静态函数我得到数据然后通过javascript调用这个函数所以当我点击这个按钮图表是显示但是当没有图表时它显示代码中的错误,所以为此我想在没有图表时显示警告框..

public static function(int ID)
try
{
}
 catch (Exception ex)
 {
 Response.Write("<script>alert('" + Server.HtmlEncode(ex.ToString()) + "')</script>");
 }

我尝试上面但显示错误消息

  

错误3 非静态字段需要对象引用,   方法,或属性&#39; System.Web.UI.Page.Server.get&#39;
   错误2 一个对象   非静态字段,方法或属性需要引用   &#39; System.Web.UI.Page.Response.get&#39;

lbViewChart是链接按钮... jquery的

    <script type="text/javascript">
    var strArray = "[['sfdsdfLi', 9],['Kiwsdfi', 3],['Mixesdfd nuts', 1],['Oranges', 6],['Grapes (bunch)', 1]]";
     $(function () {
    $('[ID*=lbViewChart]').on('click', function () {
        var row = $(this).closest('tr');
        var Id = row.find('td')[0].firstChild.data;
        var obj = {};
        obj.ID = Id;
        GetData(obj);
        return false;
    });
});
    function GetData(obj) {
        $.ajax({
            type: "POST",
            url: "WebForm1.aspx/GetVoiliations",
            data: JSON.stringify(obj),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: true,
            cache: false,
            success: function (result) {

                alert(result.d);
                alert('u');
                //start
                strArray = result.d;
                var myarray = eval(strArray);


                $('#container').highcharts({
                    chart: {
                        type: 'pie',
                        options3d: {
                            enabled: true,
                            alpha: 45
                        }
                    },
                    title: {
                        text: 'Contents of Highsoft\'s weekly fruit delivery'
                    },
                    subtitle: {
                        text: '3D donut in Highcharts'
                    },
                    plotOptions: {
                        pie: {
                            innerSize: 100,
                            depth: 45
                        }
                    },
                    series: [{
                        name: 'Delivered amount',
                        data: myarray
                    }]
                });

                //end
            },
            error: function (error) {
                alert(error);
            }

        });
        }

    //  });

        </script>

任何解决方案?

1 个答案:

答案 0 :(得分:2)

您不能直接在静态方法中访问Server而是使用System.Web.HttpContext.Current.Server所以代码如下:

 System.Web.HttpContext.Current.Response.Write("<script>alert('" + System.Web.HttpContext.Current.Server.HtmlEncode(ex.ToString()) + "')</script>");

或者将using System.Web;包含在使用部分中,然后使用HttpContext.Current.Server

更新: -

HttpContext.Current是一个静态属性,因此您可以在静态方法中直接访问它。因此,您可以从中访问.Server和.Response`,如下所示:

 System.Web.HttpContext currentContext = System.Web.HttpContext.Current;
 currentContext.Response.Write("<script>alert('" + currentContext.Server.HtmlEncode(ex.ToString()) + "')</script>");