c# web页面向后台传递数据的几种方法

        C#web页面向后台传递数据有很多方法,可以使用服务器控件,也可以使用ajax,本文介绍几种常用的方法:

方法

(1)使用服务器控件;
(2)使用ajax+aspx;
(3)使用ajax+ashx;
(4)使用ajax+aspx静态方法。

       下面,我们写个例子,详细介绍一下这几种方法的使用:

第一步:创建ajax_01.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ajax_01.aspx.cs" Inherits="web_ajax_01" %>





    
    
	
    


    
姓名:
年龄段: 小于18岁 18-40岁 40以上
编程时间:
编程语言: java c c++ c# vb
建议:

第二步:编写ajax_01.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

public partial class web_ajax_01 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string action = "";
        if (Request.Form["action"] != "")
        action = Request.Form["action"];

        switch (action)
        {
            case "read"://查询数据
                read();
                break;
          
            default:
                break;

        }
    }
    
    private void read()
    {
        string name = Request.Form["name"];
        string age = Request.Form["age"];
        string code = Request.Form["code"];
        string language = Request.Form["language"];
        string comment = Request.Form["comment"];
        
        Response.Clear();
        Response.Write("success");
        Response.End();

    }

    [WebMethod]
    public static string read3(string name, string age, string code, string language, string comment)
    {
        return name + age + code + language + comment;

    }

}

第三步:编写ajax_01.ashx

<%@ WebHandler Language="C#" Class="ajax_01" %>

using System;
using System.Web;

public class ajax_01 : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";

        string action = context.Request["action"];
        if (action == "read")
        {
            read(context);                
        }        
        
        context.Response.Write("Hello World");
        
    }

    private void read(HttpContext context)
    {
        string name = context.Request.Form["name"];
        string age = context.Request.Form["age"];
        string code = context.Request.Form["code"];
        string language = context.Request.Form["language"];
        string comment = context.Request.Form["comment"];

        context.Response.Clear();
        context.Response.Write("success");
        context.Response.End();
        
        
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

说明:

(1)方法1和4都是向aspx传递数据;
(2)方法2和5都是向ashx传递数据;
(3)方法3是向aspx的静态方法传递数据;

ashx注意事项:

(1)ajax方法中的contentType如果指定必须指定为“application/x-www-form-urlencoded”,否则在ashx中request.form获取不到数据;
(2)如果dataType为json,想要jQuery自动解析json数据,ashx必须返回严格的json数据,而且必须是双引号(用反义字符去反义)的格式,如: context.Response.Write("{\"d\":\"Hello World\"}"),否则jquery会解析json失败;
(3)如果因为contentType未设置或者不是“application/x-www-urlencoded”类型,reque.form获取不到数据,可以通过context.Request.InputStream来获取请求内容;
(4)在请求ashx中data参数有这几种形式: data:{'a':'aa','b':'bb'}, data:"a=aa&b=bb",data:{a:'aa',b:'bb'},这三种数据都可以通过request.form[""]来获取到。

aspx的静态方法注意事项:

  (1)aspx的后台方法必须静态,而且添加webmethod特性;
  (2)在ajax方法中contentType必须是“application/json”;
  (3)data传递的数据必须是严格的json数据,如"{'a':'aa','b':'bb'}",而且参数必须和静态方法的参数一 一对应;
  (4)aspx的后台方法返回的数据默认形式是“{'d':'返回的内容'}”,所以如果dataType指定为"json"必须通过data.d来获取返回数据。

个人看法:

静态方法非常不灵活,写起来还比较复杂;
具体的写法不只文中的几种方法,还有其它的写法,只要能工作就可以;
服务器控件的方法没有介绍,直接调用就好了,个人非常喜欢,就喜欢简单的,效率没得说。

你可能感兴趣的:(C#)