ASP.NET基础06_琐碎
ASP.NET
琐碎:
Server对象补充
Server.Execute("path");//在当前上下文中执行虚拟路径中的处理程序,可以用来打开aspx文件
导航控件
SiteMapPath控件:使用Web.sitemap文件(也可以使用xml),对url,title等属性的绑定,编辑模板可以设置各种样式,不懂就把模板的单词翻译一下,或者百度搜索,模板的样式千变万化,有很多改变的空间
TreeView控件:使用xml文件,当然也可以使用Web.sitemap文件,在编辑控件的属性时,对它进行xml属性的绑定。模板同上
母版页控件与属性获取
Master.FindControl("母版页控件ID"),这段代码在子页中使用,如果在模板页定义了属性
public Label MasterValue { get { return Value; } set { Value = value; } }
value是模板页中Label 控件id,则可以直接用Master.MasterValue使用,得到母版页Label 控件
访问嵌套母版页控件
this.Master.Master.FindControl("ContentPlaceHolder1").FindControl("控件ID");
思路:从父容器中寻找,即母版的母版
向客户端发送脚本
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "脚本的文本");
ADO.NET
检查集合是否包含具有指定名称的列
table.Columns.Contains("列名"),用于判断,bool类型
伪静态实现
一般是使用组件,这里使用IHttpHandler接口
创建一个cs文件,让里面的class实现IHttpHandler接口
再在<system.web>节点下<httpHandlers>节点中添加配置
大致如此
<add verb="*" path="访问路径如*.shtml" type="class名字,即创建的cs中的类名"/>
//简单实现 public void ProcessRequest(HttpContext context) { //路由修改,改变浏览器url链接名 //在web.config中配置 //<httpHandlers>中 //<add verb="*" path="Books/*.shtml" type="URLRewrite"/> string Url = context.Request.Url.ToString(); //找到最后一个/,然后后面就是访问文件页面,去掉后缀,得到关键的访问Query字段 string id = Url.Substring(Url.LastIndexOf("/") + 1).Replace(".shtml", ""); //对应处理的程序 context.Server.Execute("实际存在的访问页.aspx?" + id); }
public bool IsReusable { get { return true; } }
简单From验证,实现限制访问
以下是我的理解,其实使用form认证很简单
1.Web.config中的配置,这个主要是修改认证方式,默认一般的是windows认证,这项配置位于<system.web>节,如果没有的话要手动加入。
<authentication mode="Forms"> <forms loginUrl="default.aspx" name=".ASPXAUTH"></forms> </authentication>
2.上面的loginUrl指明验证登录页。
<authorization> <deny users="?" /> </authorization>
这节呢就是拒绝其他所有未验证用户访问本目录下的文件或网页。如果允许的话用 <allow users="*" />
这样,验证功能就没有用了。
做了如上所述的设置后,只要用户通过web方式访问本虚拟目录下的任何文件都会被自动定向到default.aspx。
“allow”允许的意思;“*”表示所有用户;
“deny” 拒绝的意思;“?”表示匿名用户;
在每个目录下都可以有自己的配置文件以实现不同的权限访问(每个受限制的文件下创建web.config配置文件)
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </configuration>
写上如下配置
网上有多级多目录处理的可以参考
讨论如下 其中的(location节点中的path代表本地目录地址,本人验证可行)
我们上面提到每个目录下都可以有自己的配置文件以实现不同的权限访问,那么当子目录比较多的时候,维护的难度比较大,那么有没有简单统一的处理方式呢,答案是当然有。我们可以<location>用于指定不同的目录。如下所示:
<location path ="Public"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path ="ManageSys"> <system.web> <authorization> <allow users="Admin"/> <deny users="*"/> </authorization> </system.web> </location> <location>
节还是放在原来的system.web中
细心的人可能早就发现 ASP.NET 的安全认证只针对 .aspx、.ascx …… 等 ASP.NET 文件起作用,而对普通页面与文件却“视而不见”,如 .htm、.js 、.jpg 等。通过以下步骤你就可以保护你想保护的文件类型。
打 开 Internet 信息服务(IIS)管理器 → 右击本项目虚拟 → 属性, 点击按钮“配置”,出现如下对话框: 双击 .aspx 的应用程序扩展 → 查看对话框内容, 复制“可执行文件”的全路径名称后 → 点击“取消”返回上一层对话框 → 点击按钮“添加”
粘贴刚 才复制的内容(内容为 c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll ) → 填写后缀名为 .htm → 填写动作限制为“GET,HEAD,POST,DEBUG”(为方便省事你可选全部)即可.
最后,我们知道form验证其实是基于cookies的,那如果客户端禁用了cookies怎么办呢,我们在configuration中加入如下一句:
<configuration>
<sessionState cookieless="true" timeout="20" />
</configuration>
就可以解决了