我想象中的布局方式是,顶部是banner,导航栏,编辑、历史等链接,中间是Wiki或者FckEditor,下面是底边栏,显示一些提示信息和版权信息。这可以使用frame、iframe自己编码实现,也可以利用一些工具,我选择使用JQuery和它的插件JQuery Layout。
在VisualWiki里创建scripts目录,加入jquery和jquery layout,我用的版本是1.2.6。另外,加入jquery-1.2.6-vsdoc.js的话,在Visual Studio里也可以进行JQuery的智能提示。再创建一个styles目录,把BasicStyle.css复制进去,我们还需要多一些css支持,也可以添加到这个css文件中。创建一个images,放入一个banner.jpg文件等等。
JQuery Layout的写法基本上是定义一些特定class的div,然后把不同的内容,放入不同的div里,然后在script里初始化一下它,就可以了。所以,对于Show或者Edit页面,基本不用修改,只要修改Main.master就可以了,另外,考虑到我们要加入登录功能,我想用master页来进行鉴权工作,分离出一个新的master页也许更好些,Main.master负责鉴权和部分布局(manage部分也需要banner),而Wiki.master负责Wiki的布局,在Main.master里加入对于css和js的链接,并调用jquery layout进行初始化,它还会调用Wiki.master里的resetLayout以完成Wiki页的layout工作:
<%@ Master Language="C#" Inherits="Lephone.Web.SmartMasterPageBase" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link type="text/css" href="styles/BasicStyle.css" rel="stylesheet" />
<script type="text/javascript" src="scripts/jquery-1.2.6.js"></script>
<script type="text/javascript" src="scripts/jquery.layout.js"></script>
<script type="text/javascript">
function resetMainLayout() {
$('form').layout({ slidable: false, resizable: false, closable: false,
spacing_open: 0, north__size: 52, center__paneSelector: "#mainContent"
});
if (resetLayout)
resetLayout();
}
$(document).ready(function() { resetMainLayout(); });
$(window).resize(function() { resetMainLayout(); }); // for resize bug with form
</script>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div class="ui-layout-north banner">
</div>
<div class="ui-layout-center">
</div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link type="text/css" href="styles/BasicStyle.css" rel="stylesheet" />
<script type="text/javascript" src="scripts/jquery-1.2.6.js"></script>
<script type="text/javascript" src="scripts/jquery.layout.js"></script>
<script type="text/javascript">
function resetMainLayout() {
$('form').layout({ slidable: false, resizable: false, closable: false,
spacing_open: 0, north__size: 52, center__paneSelector: "#mainContent"
});
if (resetLayout)
resetLayout();
}
$(document).ready(function() { resetMainLayout(); });
$(window).resize(function() { resetMainLayout(); }); // for resize bug with form
</script>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div class="ui-layout-north banner">
</div>
<div class="ui-layout-center">
</div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>