关于.net项目从vs2003升级到2005的若干问题
2007-02-01 16:42
399 查看
本人刚学习VS2.0,诸多问题,请勿见笑。
1.项目从2003转换成2005版本:用VS2005直接打开项目文件就会自动转换,注意保存备份,不然转换失败还可以恢复。
2.似乎2005中.cs文件里控件的声明都取消了,所以我一个js内部嵌入了一个Literal控件,转换后.cs文件里就说已经有了声明,注释掉就可以了。
3.转换后运行后发现报错:
Parser Error Message: Unrecognized configuration section ’xhtmlConformance’
Source Error:
是只要在IIS里的ASP.net选项卡中选择到2.0就可以了。
4.使用MasterPage
如同使用Theme可以格式化整个网站各个控件的显示模式一样,Master Page可以用来定义网站中不同网页的相同部分,例如整个网站都包括同样的格局,同样的页头,同样的页脚,同样的导航栏。这个时候,可以把这些控件定义在一个masterpage上。其他网页只需要继承这个Masterpage即可。
Master page文件本身的写法和其他aspx页面并没有什么不同,主要的区别在于,Master page包含一个ContentPlaceHolder ,这个控件定义了一些可以被其他页面继承的区域,该区域内可以被其他页面用来摆放自己的控件。
eg: Master page文件MyMaster.master
Master page文件可以拥有自己的服务器端代码文件,该文件定义了一个contentplaceholder控件为了给继承的页面使用控件定义了一个AdRotator(广告)控件和它关联的数据源XmlDataSource 任何继承MyMaster.master的aspx文件都会在下方有一个广告条!
format.aspx
2.如果在Master Page中定义了Theme,VS2005会进行警告。实际运行将以子页面的theme为基准
3.在web.config中可配置master page为整个站点使用
4.动态应用Master Page
5.操作Master Page中的控件 (弱类型)
6.操作Master Page中的控件 (强类型)
7.响应Master Page的事件
ContentPage要响应MasterPage页上某些控件的事件(例如:Button).
和Scenario 1提到的一样,可以把MasterPage的Button当做属性暴露出来,
在ContentPage页对其的Click事件进行订阅.但这样造成MasterPage和ContentPage页的藕合太高.
更好的Pattern应该是在App_Code中定义事件,委托.在MasterPage中定义事件,并且暴露该事件.
这样在ContentPage中就可以订阅该事件.
8.Master Page嵌套
Master Page可以嵌套使用,嵌套的Master Page只能含有Content控件,
但Content控件本身可以再嵌套 ContentPlaceHolders控件。
1.项目从2003转换成2005版本:用VS2005直接打开项目文件就会自动转换,注意保存备份,不然转换失败还可以恢复。
2.似乎2005中.cs文件里控件的声明都取消了,所以我一个js内部嵌入了一个Literal控件,转换后.cs文件里就说已经有了声明,注释掉就可以了。
3.转换后运行后发现报错:
Parser Error Message: Unrecognized configuration section ’xhtmlConformance’
Source Error:
是只要在IIS里的ASP.net选项卡中选择到2.0就可以了。
4.使用MasterPage
如同使用Theme可以格式化整个网站各个控件的显示模式一样,Master Page可以用来定义网站中不同网页的相同部分,例如整个网站都包括同样的格局,同样的页头,同样的页脚,同样的导航栏。这个时候,可以把这些控件定义在一个masterpage上。其他网页只需要继承这个Masterpage即可。
Master page文件本身的写法和其他aspx页面并没有什么不同,主要的区别在于,Master page包含一个ContentPlaceHolder ,这个控件定义了一些可以被其他页面继承的区域,该区域内可以被其他页面用来摆放自己的控件。
eg: Master page文件MyMaster.master
<%@ Master Language="VB" CodeFile="MyMaster.master.vb" Inherits="MyMaster" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:contentplaceholder id="ContentPlaceHolder1" runat="server"> </asp:contentplaceholder> <br /> <asp:AdRotator ID="AdRotator1" runat="server" DataSourceID="XmlDataSource1"/> <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/ads.xml"> </asp:XmlDataSource> </div> </form> </body> </html>
Master page文件可以拥有自己的服务器端代码文件,该文件定义了一个contentplaceholder控件为了给继承的页面使用控件定义了一个AdRotator(广告)控件和它关联的数据源XmlDataSource 任何继承MyMaster.master的aspx文件都会在下方有一个广告条!
format.aspx
<%@ Page Language="VB" MasterPageFile="~/MyMaster.master" AutoEventWireup="false" CodeFile="frommaster.aspx.vb" Inherits="frommaster" title="Untitled Page" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <asp:Label ID="Label1" runat="server" Text="name"></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="submit" /> <br /> <asp:Label ID="Label2" runat="server"> </asp:Label> </asp:Content>
注意事项
1.在*.aspx文件中无法动态的改变*.master文件中的控件的状态2.如果在Master Page中定义了Theme,VS2005会进行警告。实际运行将以子页面的theme为基准
3.在web.config中可配置master page为整个站点使用
<configuration> <system.web> <pages masterPageFile="~/Site.master" /> </system.web> </configuration>
4.动态应用Master Page
void Page_PreInit (Object sender, EventArgs e) { Page.MasterPageFile = "~/Site.master"; }
5.操作Master Page中的控件 (弱类型)
<asp:Label ID="Title" RunAt="server" /> ((Label) Master.FindControl ("Title")).Text = "Orders";
6.操作Master Page中的控件 (强类型)
<asp:Label ID="Title" RunAt="server" /> . . . <script language="C#" runat="server"> public string TitleText { get { return Title.Text; } set { Title.Text = value; } } </script> content page加入如下声明 <%@ MasterType VirtualPath="~/Tree.master" %> 这样Asp.net编译器会为我们生成一个强类型的Master属性(在页面文件的CS文件的类中). 这样,我们就可以直接通过Master.Info来操作MasterPage上的东西. 调用如下 Master.TitleText = "Orders";
7.响应Master Page的事件
ContentPage要响应MasterPage页上某些控件的事件(例如:Button).
和Scenario 1提到的一样,可以把MasterPage的Button当做属性暴露出来,
在ContentPage页对其的Click事件进行订阅.但这样造成MasterPage和ContentPage页的藕合太高.
更好的Pattern应该是在App_Code中定义事件,委托.在MasterPage中定义事件,并且暴露该事件.
这样在ContentPage中就可以订阅该事件.
8.Master Page嵌套
Master Page可以嵌套使用,嵌套的Master Page只能含有Content控件,
但Content控件本身可以再嵌套 ContentPlaceHolders控件。
<!-- Orders.Master --> <%@ Master MasterPageFile="~/Site.Master" %> <asp:Content ContentPlaceHolderID="..." RunAt="server"> <asp:ContentPlaceHolder ID="..." RunAt="server"> ... </asp:ContentPlaceHolder> <asp:Content>
相关文章推荐
- 一种由vs2003项目升级为2005项目造成的ajax toolkit样式问题
- 关于把.net 2.0的项目升级到.net4.0遇到的一些问题
- “关于XX若干历史问题的决议”——半途接收项目的第一要务
- 关于TFS2010 远程无法创建团队项目的若干问题总结
- 关于升级iOS9.0之后,项目中若干错误的解决方法
- 项目升级到.NET 3.5,遭遇compilerOptions问题
- 项目升级到.NET 3.5,遭遇compilerOptions问题
- 项目从vs2003升级到Vs2008的问题
- 关于哥带的第一个项目的若干问题
- 关于vc2005应用程序部署发行的若干问题
- 关于.net项目开发工具(V2.0)SQLServer 2005数据库插件的失误
- 关于使用ABP框架搭建的项目升级时需要注意的问题汇总
- 关于新项目部署的若干问题
- VS2003升级到2005后使用AjaxControlToolkit的一诡异问题(已找到解决办法,求解原因)
- 如何解决Vs2003升级到2005出现乱码的问题!
- 关于软件项目工作量估算的若干问题
- 关于.so库文件引入项目导致crash的若干问题总结
- 说说关于.net中导入excel的问题(项目中用到的)
- 把vs2003开发的项目升级到vs2008,在升级中遇到了很有多的问题