1、.Net的HTTP请求
.NET与ASP的运行机制有很大不同.
ASP的请求与响应是,ASP页面被请求,然后逐行解释.是基于过程的.最多是包含了文件,需要先引入文件罢了.
而.Net,在页面被请求后,首先是加载HTTP Module,这不是本文的重点.然后再加载HTTP
Handler.这也不是本文的重点.加载的这两项,都需要在Webconfig文件中配置.大家知道的URL转址就是这么实现的.在完成这些之后才开始
给出响应的页面.
在给出响应页面的工作中,.Net就表现出和ASP的最大区别来..Net是面向对象的语言,是基于类的语言.没有类很难写出有意义的.Net程序.如果写出来,也就是个ASP的翻版.
2、.NET中基本文件结构(继承关系)
首先大家看到无论在1.1还是2.0中,用VS创建的网站每个ASPx文件都对应一个cs文件(或者vb等其它语言).而cs文件里的类一般和文件同名,
如果遇见关键字的情况才会自动使类名前加个'_',例如:_Default.创建的这个cs文件继承自System.Web.UI.Page类,而且只
能\必须继承该类.原因就是ASPx文件是继承cs文件的.
就拿Default.ASPx,Default.ASPx.cs文件来说.
Default.ASPx.cs里包含了类 _Default,继承字System.Web.UI.Page
通过
public class _Default : System.Web.UI.Pag ......
前段时间因为一特定需求写了下面代码。需求如下:在用户访问本站所有aspx页面时,首先判断用户Session["login"]是否存在,如果不存在,说明该用户未登陆,要让该用户跳转到指定的页面。所以想写一个Session的过滤器,思前想后应该写一个继承IHttpModule的处理类。试验了几种方式发现只有将方法加在.AcquireRequestState中才能读取session。
共享代码如下 MyModule.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// MyModule 的摘要说明
/// </summary>
public class MyModule:IHttpModule
{
public MyModule()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region IHttpModule 成员
&n ......
private
static
CacheItemRemovedCallback OnCacheRemove
=
null
;
protected
void
Application_Start(
object
sender, EventArgs e)
{
AddTask(
"
DoStuff
"
,
60
);
}
private
void
AddTask(
string
name,
int
seconds)
{
OnCacheRemove
=
new
CacheItemRemovedCallback(CacheItemRemoved);
HttpRuntime.Cache.Insert(name, seconds,
null
,
DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
CacheItemPriority.NotRemovable, OnCacheRemove);
}
public
void
CacheItemRemoved(
string
k,
object
v, CacheItemRemovedReason r)
{
//
do stuff here if it mat ......
ASP.NET网络编程中常用到的27个函数集
Abs(number) 取得数值的绝对值。
Asc(String) 取得字符串表达式的第一个字符ASCII 码。
Atn(number) 取得一个角度的反正切值。
CallByName (
object
, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。
CBool(expression) 转换表达式为Boolean 型态。
CByte(expression) 转换表达式为Byte 型态。
CChar(expression) 转换表达式为字符型态。
CDate(expression) 转换表达式为Date 型态。
CDbl(expression) 转换表达式为Double 型态。
CDec(expression) 转换表达式为Decimal 型态。
CInt(expression) 转换表达式为Integer 型态。
CLng(expression) 转换表达式为Long 型态。
CObj(expression) 转换表达式为Object 型态。
CShort(expression) 转换表达式为Short 型态。
CSng(expression) 转换表达式为Single 型态。
CStr(expression) 转换表达式为String 型态。
Choose (index, choice
-
1
[, choice
-
2
, ... [, choice
-
n]]) 以索引值来选择并传回所设定的参数。
Chr(charcode) 以ASCII 码来取得字符内容。
Close(filenumberlist) 结束使用Open 开启的档案。 ......
1.关于缓存
缓存上,数据层上的缓存是必须的,这点不必多说了。
另一个很重要的是:视图片段缓存。
我参考了老赵的写的三篇关于片段缓存的文章:
适合ASP.NET MVC的视图片断缓存方式(上):起步
适合ASP.NET MVC的视图片断缓存方式(中):更实用的API
适合ASP.NET MVC的视图片断缓存方式(下):页面输出原则
本想用老赵的了,但是我发现Asp.net MVC2 的有一个新功能: Html.Partial可以返回生成的HTML, 返回的类型是:MvcHtmlString. 虽然要利用Partial View才能生成Html片段,但是我想这个已经够我用的了,所以我做了一个这样一个Helper,主要是将生成的HTML片段缓存到Memcached里。代码如下:
public static class MvcHtmlHelper
{
public static MvcHtmlString MemcacheHtmlPartial(this HtmlHelper htmlHelper,int duration, string partialViewName, object model, ViewDataDictionary viewData)
{
object obaear = htmlHelper.ViewContext.RouteData.Da ......
前面对route、controller、view 已经有了基本的了解,今天我们就来一个简单的实例 -- Movie
开始之前,简单说一下 model(模型),相信大家做分层开发的时候一定用过它,MVC的model和他一样,
每一个model 对应数据库一张表,这样我们就是用model的属性访问表中每一行记录的某一列值。
mvc中你可以自己写model,也可以使用 ADO.NET Entity Data Model、Linq to SQL 类 等,今天这个实例我们用的是
实体数据模型。下面我们就记录下这个简单实例的步骤:
一、在数据库中建一张 Movies 表:
字段:ID int , --自增长 主键
Movie_Name nvarchar(50) , --电影名称
Release_Date datetime --上映时间
二、新建asp.net mvc2 项目
这里我们可以新建 asp.net mvc 2 web application(当然也可以新建一个空的 mvc项目) ,项目名:Movie
项目建好了以后,我们可以把不用的controller、 ......