9、和想像的一样吧,我们再来看看源代码:
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <head><title>
- UntitledPage
- </title></head>
- <body>
- <formname="aspnetForm"method="post"action="Default2.aspx"id="aspnetForm">
- <div>
- <inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"
value="/wEPDwULLTEwMDUyNjYzMjhkZASHJAhe9XmxUHPbOeONMX2y6XYi"/>
- </div>
-
- <div>
- thisisthepage'sheader<br/>
-
- thispage'scontent:hello,world!<br/>
-
- thisisthepage'sfooter </div>
- </form>
- </body>
- </html>
|
母版内容是放在一个div中的,而content页面并没有放在单独的div,就是说在母版不会给子页添加任何的多余代码。这就给我们编程和网页布局带来了很大的灵活性,我们可以充分利用CSS+DIV的形式定位,亦可以用table方式进行定位。修改时也不必每个页面都去修改。
10、对于不是一块固定内容的母版,我们可以用多个ContentPlaceHolder1来进行布局,下面的例子是用table来定位的:
11、在相应的子页面里会有两个content:
生成的代码:
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <head><title>
- UntitledPage
- </title></head>
- <body>
- <formname="aspnetForm"method="post"action="Default3.aspx"id="aspnetForm">
- <div>
- <inputtype="hidden"name="__VIEWSTATE"id="__VIEWSTATE"
value="/wEPDwUKMTY1NDU2MTA1MmRkPjWLPyqA5JXcW5ivHc0NiYajQTU="/>
- </div>
-
- <div>
- thisisthepage'sheader<br/>
- <table>
- <tr>
- <td>
-
- ohmyContent1
-
- </td>
- <td>
-
- himyContent2
-
- </td>
- </tr>
- </table>
- thisisthepage'sfooter
- </div>
- </form>
- </body>
- </html>
|
12、要灵活应用,CSS虽然也可以用DIV来解决这个问题,但是一些非标准控件的样子是很难用CSS来控制的,如果你做了另外一套母版MasterPage2.master,你可在页面中动态设置:
protected void Page_PreInit(object sender, EventArgs e) { MasterPageFile = "~/MasterPage2.master"; } |
先到这里,据说还可以嵌套应用,不过目前是够用了,配合一下theme的使用,下次再说。
查看本文来源