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;
}
}