webform前台获取sessio_webform 静态方法里面怎么获取session - CSDN
精华内容
参与话题
  • 在asp.net webform开发中,用jQuery ajax传值一般有几种玩法 1)普通玩法:通过一般处理程序ashx进行处理; 2)高级玩法:通过aspx.cs中的静态方法+WebMethod进行处理; 3)文艺玩法:通过WCF进行处理。 第一种...

    Jquery Ajax调用aspx页面方法

    在asp.net webform开发中,用jQuery ajax传值一般有几种玩法

    1)普通玩法:通过一般处理程序ashx进行处理;

    2)高级玩法:通过aspx.cs中的静态方法+WebMethod进行处理;

    3)文艺玩法:通过WCF进行处理。

    第一种和第三种方法不在本文介绍范围之内,下面重点介绍第二种方法。

    说明

    在我们的印象里 asp.net的Web服务是以.asmx来结尾的,而我们现在的asp.net也能实现Web服务,这是因为默认Web.config中已经添加了System.Web.Handlers.ScriptModule,它是用于管理asp.net中ajax功能的HTTP模块,这样不管用户是请求.asmx文件还是.aspx文件,都会通过此处理程序来处理请求。

    后台代码:

    复制代码
    using System.Web.Services; //引入命名空间
    
    [WebMethod]
    public static string SayHello()
    {
        return "Hello Ajax!";
    }
    复制代码

    前台页面代码:

    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btn" runat="server" Text="验证用户" />
    </div>
    </form>

    Javascript代码:

    复制代码
    $(function() {     
        $("#btn").click(function() {     
            $.ajax({              
                type: "post", //要用post方式                 
                url: "Demo.aspx/SayHello",//方法所在页面和方法名
                contentType: "application/json; charset=utf-8",     
                dataType: "json",     
                success: function(data) {                    
                    alert(data.d);//返回的数据用data.d获取内容
                },
                error: function(err) {     
                    alert(err);     
                }     
            });
        });     
    });
    复制代码

     

    效果:

    需要注意的地方

    一、data参数写法

    复制代码
    //1)普通写法,JSON键值对,如:单个参数的
    data:"{newsID:"+ id +"}",
    //多个参数的形式:
    data:"{newsID:"+ newsID +",name:"+ name +"}",
    //2)文艺写法:各种引号,双引号,单引号拼接,如
    //单个参数写法:
    data:"{'name':'"+ name +"'}",
    //多个参数写法:
    data: "{'content':'" + $("#content").val() + "','createTime':'" + $("#createTime").val() + "','creator':'" + $("#creator").val() + "'}"
    //容易出错!!!!!
    复制代码

    二、用QueryString传值是后台取不到的问题

    在WebMethod()方法中,是不能通过 HttpContext.Current.QueryString.Get("id")来获取query string,
    因为在WebMethod()默认是用POST方法提交的,而用GetQueryString是不能取到值的。
    替代方法是用JS获取url中的参数,用ajax提交给后台方法是用:
    复制代码
    < script type = "text/javascript" >
        function getArgs(strParame) {
            var args = new Object();
            var query = location.search.substring(1); // Get query string
            var pairs = query.split("&"); // Break at ampersand
            for (var i = 0; i < pairs.length; i++) {
                var pos = pairs[i].indexOf('='); // Look for "name=value"
                if (pos == -1) continue; // If not found, skip
                var argname = pairs[i].substring(0, pos); // Extract the name
                var value = pairs[i].substring(pos + 1); // Extract the value
                value = decodeURIComponent(value); // Decode it, if needed
                args[argname] = value; // Store as a property
            }
            return args[strParame]; // Return the object
    } < /script>
    复制代码

    三、时间问题

    复制代码
    WCF 或 模拟Web服务处理JSON时返回时间格式问题。解决方法如下:
    
    // 杂乱的时间
    var rawDate = "/Date(1347120000000+0800)/";
    // 提取时间字符串
    var strDate = rawDate.substr(6, 13);
    // 把时间字符串转化成int类型
    var intDate = parseInt(strDate);
    // 构造一个Date对象
    var newDate = new Date(intDate);
    // 将时间转化成当地时间格式
    var myDate = newDate.toLocaleDateString();
    // 最终结果
    alert(myDate);
    
    // 合并成一句
    var resultDate = new Date(parseInt("/Date(1347120000000+0800)/".substr(6, 13))).toLocaleDateString();
    复制代码

    四、$.ajax参数详解

    复制代码
    //标准的写法:
    $.ajax({
         type: "post",
         dataType: "json",
         contentType: "application/json", //注意:WebMethod()必须加这项,否则客户端数据不会传到服务端
         data:{如上所述},//注意:data参数可以是string个int类型
         url: "List.aspx/DeleteNews",//模拟web服务,提交到方法
         // 可选的 async:false,阻塞的异步就是同步
         beforeSend:function(){
              // do something.
              // 一般是禁用按钮等防止用户重复提交
              $("#btnClick").attr({disabled:"disabled"});
              // 或者是显示loading图片
         },
         success: function (data) {
              alert("success: " + data.d);//注意这里:必须通过data.d才能获取到服务器返回的值
              // 服务端可以直接返回Model,也可以返回序列化之后的字符串,如果需要反序列化:string json = JSON.parse(data.d);
              // 有时候需要嵌套调用ajax请求,也是可以的
         },
         complete: function(){
              //do something.
              $("#btnClick").removeAttr("disabled");
              // 隐藏loading图片
         },
         error: function (data) {
              alert("error: " + data.d);
         }
    });
    展开全文
  • C# WebForm 用法

    千次阅读 2017-12-21 12:14:15
    C# WebForm中用法 参考内容: http://www.cnblogs.com/nidakun/archive/2012/07/17/2595779.html 用于在前端执行后台代码, 或取得后台数据. 1. 取返回值 用于在每个webfrom页显示一个导航栏.  2. ...

    C# WebForm中<%%>用法

    参考内容: http://www.cnblogs.com/nidakun/archive/2012/07/17/2595779.html

    <%%>用于在前端执行后台代码, 或取得后台数据.


    1.<%=%>  取返回值  

    <%=sf.ShowTitle()%%>   用于在每个webfrom页显示一个<首页|上一页|退出>导航栏. 


    2.<%%> 执行后台代码内容

    <%sf.CheckSecurity()%> 用于页面权限检查. 


    3.<%#%> 用于绑定数据

    <asp:TextBox runat="Server" ID="txtSubColor" Text='<%# Eval("SubColorNo") %>' Width="50px"></asp:TextBox>

    <asp:CheckBox ID="chkItem" runat="server" Checked='<%# Bind("CheckFlag") %>'  />

    <input id="chkSelect" type="checkbox" runat="server" title='<%#DataBinder.Eval(Container.DataItem,"CUS_NO")%>' />

    展开全文
  • 最近在开发项目中遇到用前台ajax调用后台静态方法,在静态方法中却取不到Session的问题:非静态的字段、方法或属性“System.Web.UI.Page.Session.get”要求对象引用

              最近在开发项目中遇到用前台ajax调用后台静态方法,在静态方法中却取不到Session的问题:非静态的字段、方法或属性“System.Web.UI.Page.Session.get”要求对象引用

              在webfrom页面后台的静态方法中是没有办法直接获取Session的  要用 HttpContext.Current.Session["User"]

    展开全文
  • C# WebForm

    千次阅读 2014-03-04 13:59:19
    什么是WebForm常用控件。 WebForm控件是如何解析成为HTML表单的。 WebForm优点。 WebForm缺点。 我使用WebForm常常烦的错误。

    什么是WebForm

    WebForm诞生于2002年

    WebForm是微软开发的一款产品,它将用户的请求和响应都封装为控件。

    WebForm负责封装用于用户端显示的数据。

    在EasyJWeb中,WebForm是一个非常重要,也是使用最为频繁的对象,他充当了在视图及程序之间传输、处理数据的媒介。

    常用方法

    1、WebForm中包含了视图页面中传输进来的数据,可以通过Request.Form.Get("键名")的方式来读取这些数据。由于提交过来的form表单只有只读属性,说以只能使用Get方法获取表单中的值,而不能添加修改表单里面的值。

    2.如果需要更多的用法,请参考EasyJWeb的教程;

    WebForm控件

    HTML控件
    asp .net将HTML控件当做普通字符串渲染到浏览器端(不做任何处理)

    asp .net控件
    经过asp .net高度封装的控件(运行在服务器端/渲染到浏览器端)

    HTML控件
    运行在服务器端/渲染到浏览器端/部分封装(属性多为HTML属性)
    与asp .net控件相比优点: ①操作方便②会对虚拟路径 id→ClientID进行处理


    WebForm控件的运行

    点击ASP按钮会先执行Page_Load事件,然后才会去执行相应的Button_Click()事件。

    WebForm的一个关键点就是PostBack,无论你点击哪一个ASP.NET服务器按钮都会回发到服务器端。而Html控件除非点击submit控件其余是不会回发的。

    但是也可以设定点击的控件是否需要回发的服务器端。如果设置ASP.NET的控件AutoPostBack="false"那么点击这个按钮是不会回发到服务器端的,同样不会造成页面刷新。

    protected void Page_Load(object sender,EventArgs e)

    {

    if(!Page.ISPostBack)

    {

    //TODO:界面初始化工作,如果不在这里面那么每次点击按钮回发的时候,都会先把这里面的方法执行一次,可能会破坏提交过来表单数据准确性和数据完整性。

    }

    }

    WebForm优点

    1.编写简便,所看见的页面就是最后运行的界面,提高了开发效率。

    2.支持事件模型开发。有丰富的服务器组件。   //ASP.NET服务器控件和javascript都事件模型,事件源将事件发送给一个或多个监听器,监听器只要接收到事件,监听器将处理这些事件。

    3.控件丰富。

    WebForm缺点

    1.封装太强,很多底层的东西初学者不是很明白。

    2.自定义控制不灵活。

    3.ViewState处理。

    这里要讲出ViewState的使用中对于开发过程中肯定是非常的方面可以像Session一样的在客户端存放一些零时数据和变量,因为他耗费的服务器资源较少(与Application和Session相比)。默认情况下.NET系统默认对状态数据进行维护,并且适用于任意浏览器。

    但是在出现他之后随之引起的问题,首先性能问题,用户显示页和发送页时的速度仍然可能减慢。设备限制。移动设备可能没有足够的内存容量来存储大量的视图状态数据。潜在的安全风险。视图状态存储在页上的一个或多个隐藏域中。虽然视图状态以哈希格式存储数据,但它可以被篡改。

    使用WebForm一些小技巧

    labTitle.Text = value.ToString().Trim().Replace(System.Environment.NewLine,"<br />");//让输入框中的换行转换成为一个网页显示的回车符号。

    Response.Redirect(Request.Url.ToString()); //表示通知浏览器需要刷新本页

    以流形式下载文件首先需要把Response.Clear();//清除Response中的数据,如果不清除Response里面的遗留数据可能会导致下载的文件存在乱码。

    WebForm前台JS调用后台代码

    1.后台要被调用的函数ss()
    public string ss()
    {
    return("a");
    }
    2.前台js调用示例:
    <script language=javascript>
    var a = "<%=ss()%>";
    alert(a);
    </script>


    展开全文
  • 首先创建一个实体类 User using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace 实体类 { public class User { public int Id { get; set;... pu
  • 简单实现asp.net进度条

    万次阅读 2011-07-23 21:59:21
    程序中为了让更直观的反映命令执行的进度,考虑使用进度条,但是asp.net中没有专门的进度条控件,在网上搜了一下,...效果如图:前台代码 用两层DIV,分别表示进度条总的外框和当前进度,通过不断调整“processbar”的
  • 1、前台调用后台变量(注:数组变量不能获得,需先在后台已分隔符转成字符串变量,前台得到后再处理成数组)  后台页面提供一个全局变量,Page_Load中给赋值,前台使用来获得变量; 2、前台调用后台方法(即Ajax,见...
  • 最近帮别人“擦屁股”,做了全局CSRF漏洞修复,针对...############################# 1.webform 这种情况只需加载一个DLL(),配置web.config即可。 //iis6 //iis7 ################
  • ASP.Net概述

    千次阅读 热门讨论 2014-01-16 00:18:21
    ASP.Net概述 ...  过程如下:当浏览器地址栏写入一个请求页面路径并回车后,浏览器会向服务器发送一个请求报文。服务器接收到后,将请求交给指定的端口的软件IIS。如何是静态网页则直接返回被请求的网页....
  • ASP.NET前台向后台传参数并返回Json值

    千次阅读 2017-11-10 17:59:15
    前台:    $(function () {  var startDate = "2017-06-01 12";  var endDate = "2017-06-01 12";  $.ajax({  type: "post",  con
  • vb.net与C#混用解决方案

    千次阅读 2013-09-04 11:01:29
    所为混用不是为了能够在一个代码文件中同时书写C#和vb.net语句 而是可以在一个程序中发挥两种语言不同的优势 或者说 更容易发挥码农对不同语言的理解和长处 C/S 下的混合调用不会有任何阻碍 假如你的主项目是vb.net ...
  • url重写

    千次阅读 2018-05-16 08:39:55
    http://www.cnblogs.com/knowledgesea/archive/2012/10/08/2715350.html 一. 为了页面更有利于seo优化,url重写程序需要做出的不可缺少的手段之一。二.目前url重写最常见的两种方法有: 1.通过熟悉页面的内部执行...
  • 前台访问后台的几种方法

    千次阅读 2013-12-05 23:25:11
    1、WebMethod public static方法,ajax/PageMethods调用。 test.cs [WebMethod] public static string GetUserName() ...需要访问操作session时 [WebMethod(EnableSession = true)]//或[WebMethod(true)] public
  • Web应用程序 1.页面的C#代码(后台文件代码)一旦发生修改,需要手动重新编译(生成)一下,生成新的网站程序集(.dll),否则不会运行编写的新代码。 2.再次强调,不论是【网站】还是【网站应用程序】最终还是被编译成...
  • 保证文件名的唯一性

    千次阅读 2017-09-03 14:23:49
    在项目开发中,经常会有文件上传和下载的功能,上传的文件会...这里,在上传文件时,命名使用的是获取当前日期时间+Session的ID+文件名称 比如,上传文件“文档信息.txt”,效果如下前台代码<%@ Page Language="C#"
  • 1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?... 3.浏览器请求asp.net页面实际是请求的asp.net页面里的...
  • 1.HttpHandler实现图片上传 (1).表单元素使用 文件选择框 控件。 (2).表单设置enctype="multipart/form-data",本质上就是设置浏览器提交表单的数据时,使用随机分隔符来分割不同控件的数据,而且数据的组织形式由...
  • asp.net 一般处理程序

    万次阅读 多人点赞 2013-09-23 22:09:55
    asp.net:一般处理程序.ashx效率比较高效,WebForm(aspx)比较消耗资源,MVC(效率刚好介于两者之间) asp.net里常用的文件 .ashx 一般处理程序HttpHandler,asp.net核心程序,但一般使用.aspx(常用于不需要返回大量...
  • 上面方法优点在于session保存的线程运算类对象页面刷新后方便获得运算对象 而用Session["work"]=w可能因为很多原因而丢失 用window.setTimeout('location.href=location.href',1000)刷新,但在页面元素多的情况下...
  • 1.构想:WebForm1构建一个TextBox,一个HyperLink控件。...在WebForm3的Calendar控件中选择日期后,关闭WebForm3,并且WebForm1中的TextBox获取刚才所选择的日期。 2.实现: 1) 网上有现成的日期选择...
1 2 3 4 5 ... 20
收藏数 524
精华内容 209
关键字:

webform前台获取sessio