做软件工程探索的C#网站架构方案-总结

1.没有MVC实现控制跳转(可用于权限管理)

注:大体就是每个页面继承这个类

public class BasePage : System.Web.UI.Page
{
  
    
        //pageunload事件,并不是指浏览器关闭,而是指页面关闭,所以刷新的时候,依然会执行以下事件 
        protected void Page_Unload(object sender, EventArgs e)
        {
        }
        public static Func<Object, string> isLogin = session => session as string ?? string.Empty;
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            //自己定义的session类
            //也可以装一个对象
            if (isLogin(Session["islogin"])!="yes")
            {//这里写 跳转到登陆页面:例如: 
                //Response.Redirect("Default3.aspx");
                //Response.Redirect(string.Format("~/ReLogin.aspx?Page={0}", Request.Path));
                //Response.Redirect(string.Format("~/Default2.aspx?Page={0}", Request.Path));
                Session["islogin"] = "yes";
                Response.Redirect("Default.aspx"); 
            }
            else
            {
                
            }
        }
    
}

2.关于页面与后台ajax传参的总结。

html部分

<input type="button" size="12" value="练习1" οnclick="a1()"/>
    <input type="button" size="12" value="练习2" οnclick="a2()"/>
    <input type="button" size="12" value="练习3" οnclick="a3()"/>
    <input type="button" size="12" value="练习4" οnclick="a4()"/>
    <input type="button" size="12" value="练习5" οnclick="a5()"/>
    <input type="button" size="12" value="练习6" οnclick="a6()"/>
    <br />
    <div id="dataShow"></div>
     <script type="text/javascript" >
         function a1() {
             //alert($("#form1").html());
             $.ajax({
                 type: "Post",
                 url: "Default2.aspx",
                 // data: "{'token':'ajax'}",// 使用这种方式竟然无法传递参数,各位有知道原因的告诉一下啊。
                 //dataType为text或者html
                 data: "token=ajax",
                 success: function (data) {
                     $("#dataShow").text(data);
                 }
             });
         }
         function a2() {
             $.ajax({
                 type: "Post",
                 url: "Default2.aspx",
                 // data: "{'token':'ajax'}",// 使用这种方式竟然无法传递参数,各位有知道原因的告诉一下啊。
                 data: "token=ajaxXml",
                 // 不需要指定contentType,因为指定后返回的是整个页面的html,不知道为啥,请求解答啊。
                 dataType: "xml",
                 success: function (data) {
                     alert(data);
                 },
                 error: function (d, c, e) {
                     alert("err: "+d+ " "+c );
                 }
             });
         }
         function a3() {
             $.ajax({
                 type: "Post",
                 url: "Default2.aspx",
                 // data: "{'token':'ajax'}",// data必须是一个{key:value}的形式,这是一个字符串,是不行的。
                 // data:{token:"ajax"},// 这种方式也可行。
                 data: "token=ajaxJson",
                 /*
                    记录:如果直接请求一个页面,如果data使用"{'token':'ajax'}"这种字符串的形式,jquery是无法转换为token=ajax的形式
                    jquery 文档中说,可以使用{key:value}形式的data请求页面,此时jquery会自动添加contentType=“application/x-www-form-urlencode”,使传入的data自动转换为key=value的形式。
                 */
                 // 不需要指定contentType,因为jquery会自动添加contentType=“application/x-www-form-urlencode”。
                 dataType: "json",
                 success: function (data) {
                     alert(data);
                 },
                 error: function (d, c, e) {
                     alert(e);
                 }
             });
         }
         function a4() {
             $.ajax({
                 type: "post",
                 url: "Default2.aspx/RequestedMethod1",
                 contentType: "application/json;charset=utf-8", //必须
                 dataType: "json",
                 success: function (res) {
                     alert("success:" + res.d); // 注意这点后面要加个d才能获取字符串信息,至于为什么要加个d,你通过chrome看看返回的响应就知道了,O(∩_∩)O
                 },
                 error: function (xmlReq, err, c) {
                     alert("error:" + xmlReq + err);
                 }
             });
         }
         function a5() {
              $.ajax({
                 type: "Post",
                 url: "Default2.aspx/RequestedMethod2",
                 data: "{msg:'hello'}",//"{'msg':'hello'}",
                 contentType: "application/json;charset=utf-8",// 这句可不要忘了。
                 dataType: "json",
                 success: function (res) {
                    $("#dataShow").text("success:" + res.d); // 注意有个d,至于为什么通过chrome看响应吧,O(∩_∩)O。
                 },
                 error: function (xmlReq, err, c) {
                    $("#dataShow").text("error:" + err);
                 }
               })
         }


     </script>
后台部分

public partial class Default2 : BasePage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
        if (!this.IsPostBack)
        {
            //双问号的作用  y = x, if x is not NULL; otherwise y = -1. int y = x ?? -1;
            if ((Request["token"] ?? "") == "ajax")
            {
                // 下面这些内从可以放在一个方法里,然后通过“token”标记去判断执行哪个方法。
                Response.Write("我是直接请求aspx页面返回的文字!");
                Response.End();
            }
            else if ((Request["token"] ?? "") == "ajaxXml")
            {
                Response.ContentType = "application/xml";
                string wtstr = "<my>123</my>";
                Response.Write(wtstr);
                Response.End();
            }else if ((Request["token"] ?? "") == "ajaxJson")
            {
                // 如果要是返回的响应为xml,则必须这样设置
                Response.ContentType = "application/json";
                // 如果要是返回的响应为xml,返回的字符串必须是可以被解析的xml文档格式。
                Response.Write("[123]");
                Response.End();
            }
        }
    }//Page_Load end
    //要写这个
    [WebMethod]
    public static string RequestedMethod1() //如果没有传参就不能加参数
    {
        return "aaa";
    }

    [WebMethod]
    public static string RequestedMethod2(string msg) //如果没有传参就不能加参数
    {
        
        return msg;
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值