posts - 244,  comments - 528,  trackbacks - 6

ASP.NET的页面模型有2种:

#1,single-file-page(单文件 Web 窗体页)
说明:
1,不能直接在 Visual Studio 中创建单文件 Web 窗体页。当创建新页时,Visual Studio 会在默认情况下创建单独的 .aspx 文件和类文件。若要创建单文件页,必须在一开始就将其创建为文本文件,然后将其扩展名更改为 .aspx。
2,不能通过从工具箱中拖动将非可视组件(如数据组件)添加到该页上,因为 Web 窗体设计器不会在该页中持久保存这些组件。相反,应使用代码添加这种组件。
3,在 HTML 视图中而不是在代码编辑器中编写代码。
4,当您编写代码时,Intellisense 将受不到支持,您得不到语法检查或语句结束、制表位设置或代码格式设置等功能。
5,必须手动将事件绑定到事件处理程序。对于单文件 Web 窗体页,Visual Studio 不支持通过双击为控件的默认事件创建处理程序,也不支持代码编辑器中类和事件的下拉列表。
6,不支持某些调试功能,例如不能够通过将鼠标指向一个变量值来查看该变量值。
7,由于不会将该页中的代码编译成项目程序集,所以在运行该页之前不会捕获编译时错误

#2,Codebehind(代码后置)
分2种情况:使用Codebehind和Src属性(或者预先编译与自动编译)
1,<%@ Page Codebehind="webform1.aspx.cs" Inherits="myweb.webform1" %>
Codebehind只是说明本页面说继承的类(myweb.webform1)可以在webform1.aspx.cs文件中查找,只是设计器(VS)告诉用户一个参考信息,所以在页面运行时候不执行(当然这个语句与没写完全一样)。如果不预先编译,出现错误:
======
分析器错误
说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误信息: 未能加载类型“Test.WebForm1”。

源错误:

行 1: <%@ Page Codebehind="webform1.aspx.cs" Inherits="myweb.webform1" %>
======
解决办法:把相应的.aspx.cs文件编译成为dll放入bin文件夹,或者使用Src.

2,<%@ Page Src="webform1.aspx.cs" Inherits="myweb.webform1" %>
Src很明了,说明一个代码的路径,页面运行会自动连接到后置代码,自动编译。

根据大家自己的喜好与需求,以及结合可维护性,安全性等各方面的因素,选择3者之一。

posted on 2004-08-23 01:52 cacard 阅读(4068) 评论(18)  编辑 收藏 网摘 所属分类: ASP.NET

FeedBack:
2004-09-13 15:55 | feng
请问如何把相应的.aspx.cs文件编译成为dll放入bin文件夹???
当改成Src的话,发现在调用组件的时候出现了问题,所以只有按你的第一种方法,却不知如何把相应的.aspx.cs文件编译成为dll放入bin文件夹

  回复  引用    
2004-09-14 13:30 | caca
1,可以用VisualStudio的解决方案加载所有文件,进行编译,自动生成bin\xxx.dll的文件。
2,可以手动编译(有点麻烦)
csc /target:library wwwroot/myweb/*.cs

  回复  引用    
2004-09-29 17:36 | lyz
那请问,页面和后台程序是怎么联系起来的,需要在页面怎么引用?
谢谢,我是新手


  回复  引用    
#4楼[楼主]
2004-09-30 17:02 | caca      
一般页面执行的程序是基于事件的,比如,你想在用户点击一个Button来触发一个后台程序,那么,你就可以在用VisualStudio设计这个Button时候,双击这个Button,VisualStudio会自动生成btnname_Click这样的后台函数,你可以把处理的内容放到这里面。

(可以加我的QQ,我们详细谈论)

  回复  引用  查看    
2004-09-30 18:13 | lyz
这个我知道,嘿嘿~~
我指的是:把相应的.aspx.cs文件编译成为dll放入bin文件夹后,前台页面(.aspx)应该做怎样的修改来映射后台的.dll文件?
多谢站长耐心指导~~盼

  回复  引用    
#6楼[楼主]
2004-10-10 01:55 | caca      
"理解万岁"永远都不过时,我还是不太明白你的意思
你最好Google一下ASP.net1.1的页面模型原理,理解一下前台页面与后台程序(Codebehind)的本质关系.

  回复  引用  查看    
2005-05-08 15:36 | 小新
出现错误:行 29: public class WebForm1_aspx : myasp.WebForm1, System.Web.SessionState.IRequiresSessionState {

  回复  引用    
2005-06-07 18:14 | 游客
改成Src反而会引起上面提到的错误.
  回复  引用    
#9楼[楼主]
2005-06-07 23:58 | 卡卡-精彩生活,用心创造      
re 游客:
呵呵,我还是亲自作了试验:
JustTest.aspx的代码为:
<%@ Page Src="webform1.aspx.cs" Inherits="webform1" %>

<html>
<head>
<title>
JustTest
</title>
</head>
<body>
JustTest<br>
</body>
</html>

webform1.aspx.cs的代码如下:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public class webform1 : System.Web.UI.Page
{
void Page_Load()
{
Response.Write("ddddddddd");
}

}

结果是没有出现错误的,当然不需要预先编译.

  回复  引用  查看    
2005-07-13 10:46 | Pokay[未注册用户]
呵呵 明白了一点了
谢谢~~~

  回复  引用    
2005-07-25 16:51 | pan[未注册用户]
为什么每次都要先编译,才能更新?
就是修改.cs文件的代码后,用刷新,结果不起作用??
为什么啊?
有什么可以解决的方法嘛?

  回复  引用    
#12楼[楼主]
2005-07-30 09:57 | 卡卡(读书才是硬道理)      
re pan
解决方法就是用single-file-page,或者用src这样的话,就不用预先编译了。

  回复  引用  查看    
2005-08-22 22:21 | 不再烦[未注册用户]
感谢站长,
站长真好,

  回复  引用    
2005-12-07 16:27 | 屹立[未注册用户]
想问问站长我以下的一段代码为什么效果出不来

这是cs文件e3.aspx.cs的内容

using System.Data.SqlClient;

namespace conn
{
public class conn1 : System.Web.UI.Page
{


private void btnCounter_click(object sender,System.EventArgs e)
{

try
{
SqlConnection myConnection = new SqlConnection();
string strConn="server=172.19.24.6;uid=jykszx;pwd=jyj;database=Northwind";
myConnection.ConnectionString=strConn;
myConnection.Open();
Response.Write("<script language='javascript'>alert('连接成功!')</script>");
myConnection.Close();
}
catch
{
Response.Write("<script language='javascript'>alert('连接失败!')</script>");
}
}
}
}


这是.net文件e3.aspx的内容:

<%@ Page language="c#" Src="e3.aspx.cs" Inherits="conn.conn1"%>
<html>
<head><title>Connection</title></head>
<body>
<form runat=server>
<asp:Button Text="创建数据库连接" id="btnCounter" runat="server"/>

</form>
</body>
</html>

  回复  引用    
2005-12-21 11:49 | 屹立[未注册用户]
看来blog的人气还是少得可怜哦!!!

这个问题还是我自问自答吧:

这是cs文件e3.aspx.cs的内容

using System.Data.SqlClient;

namespace conn
{
public class conn1 : System.Web.UI.Page
{


protected void btnCounter_click(object sender,System.EventArgs e)
{

try
{
SqlConnection myConnection = new SqlConnection();
string strConn="server=172.19.24.12;uid=liz;pwd=liz;database=asp";
myConnection.ConnectionString=strConn;
myConnection.Open();
Response.Write("<script language='javascript'>alert('连接成功!')</script>");
myConnection.Close();
}
catch
{
Response.Write("<script language='javascript'>alert('连接失败!')</script>");
}

}
}
}

这里的btnCounter_click由private改为protected,否则aspx文件访问不了(有错误提示)

关键就是这里了:

先在iis里新建一个虚拟目录(记住:一定是虚拟目录,如果是localhost下面的普通文件夹是不行的)作为这

个程序的访问目录,比如目录名字叫e03。并在根目录下新建一个叫bin的文件夹

再把cs文件进行编译,csc编译器在C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322目录在,我把它添加到

path下面,这样做比较方便,命令如下(在cmd里):

csc /t:library /out:bin\e03.dll *.cs

注:e03.dll中的e03就是你刚才虚拟目录的名称,其他的照打,这个e03.dll会生成到bin文件夹里的

这是aspx文件:e3.aspx

<%@ Page language="c#" Codebehind="e3.aspx.cs" AutoEventWireup="false" Inherits="conn.conn1"%>
<html>
<head><title>Connection</title></head>
<body>
<form runat=server>
<asp:Button Text="创建数据库连接" id="btnCounter" runat="server" onclick="btnCounter_click"/>

</form>
</body>
</html>

注:button那里增加了个onclick事件,没有了就不行,就是不知道一般的教程里都没有写上,可能这就是不用vs.net的后果吧



  回复  引用    
2006-04-26 16:48 | guyiting[未注册用户]
感谢您的讲解!!懂了
  回复  引用    
2006-05-06 22:45 | 赵军[未注册用户]
很感谢 朋友 你的帖子啊………… 您QQ 是多少? 我还问题向你请教
  回复  引用    
#18楼[楼主]
2006-05-07 15:17 | 卡卡.net      
@赵军
MSN/Mail cacard@126.com

  回复  引用  查看    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 35773




相关文章:

相关链接:



NickName 卡卡 ^ cacard
MSN billgate(at)live.com
Email cacard(at)126.com


搜索

 

随笔分类

随笔档案

朋友

推荐网站

最新评论

  • 1. re: 情绪的作用
  • 总有一天这个系列的思想会停止,这个时候你长大了,或者说麻木了
  • --对月而歌
  • 2. re: 奇怪的IndexOutOfRangeException
  • 基本解决: !9C763BD9399B0328!2083.entry 另外,IndexOutOfRange只是在访问SqlServer时的表现,在访问Sybase数据库时可能会遭遇从驱动抛上来的错误“...
  • --lonegunman
  • 3. re: 奇怪的IndexOutOfRangeException
  • me too call me
  • --yuzhang233
  • 4. re: 情绪的作用
  • 卡卡同学 你现在都在想什么?
    怎么。。。
  • --baibai
  • 5. re: 理性与感性
  • 有个故事,说一位老头带着亮个儿子穿越一座山,突然遇到百年难遇的暴风雪,老透凭着多年的经验,说:“你们赶紧回去,我走的慢,会‘连累’你们。”可是他的儿子们一片孝心,谁的没离开老头,谁都没离开那场暴风雪,...
  • --NIHAIRUI

阅读排行榜

评论排行榜

This is footer