基于 ASP.NET 和 MS Access 的基本内容管理系统






3.59/5 (22投票s)
2004 年 7 月 9 日
3分钟阅读

187189

1
一个非常基础的基于 web 的内容管理系统,使用 ASP.NET 和 MS Access
引言
一个易于安装和使用,没有多余功能的基于 ASP.NET 和 MS Access 的内容管理系统。如果您需要建立一个小网站,或者快速地向现有网站添加一些页面,或者让其他人更新您网站上的页面,这个简单的系统是一个快速的解决方案。这个系统可以作为一个基本框架来构建一个更高级的内容管理系统。或者您可以将其集成到您现有的网站中,以便从您的 web 浏览器快速更新一些页面。
我对 .NET 相当陌生,正在尝试将我的技能从经典的 ASP 转移过来。所以如果你发现任何可以做得更好的地方,或者如果有什么地方工作不正常,请告诉我。
这个基本内容管理系统不使用任何模板,也没有 HTML 编辑器。这使得你的页面的设计完全取决于你。它还配备了一个简单的文件管理系统,以便您也可以轻松地上传您的图像。
一旦你把所有的文件复制到你网站结构的某个文件夹中,并且假设你在 IIS 中有 default.aspx 和一个“默认页面”。那么当你浏览到该文件夹时,你应该得到 CMS (内容管理系统) 中设置为默认的页面。
打开 include.aspx,这里包含系统使用的基本设置。这个页面将被包含在系统中的每个文件中,用于“全局”设置。
<script runat="server" language="vb">
dim dbsource as string = Server.MapPath("acm2000.mdb")
dim user as string = "admin"
dim pass as string = "1234"
dim uploadpath as string = server.MapPath("images\") '"
</script>
- 设置数据库的路径。
- 设置系统的用户名。
- 设置系统的密码。
- 设置上传文件的上传路径。
注意:您的数据库和上传路径应该具有读/写/删除权限
数据库最好位于您的 webroot 之外,以获得最佳安全性。数据库中没有存储用户名或密码,所以这并不是关键,但通常来说是个好主意。
会话用于安全,所以请确保您的 web 服务器上启用了会话,以便此应用程序工作。以下代码用于在管理页面上检查此会话。
if session("loggedin") = "" then
response.redirect("login.aspx")
end if
下面的代码将打开数据库,查找与传递给它的查询字符串变量的 ID 匹配的记录。如果没有传递查询字符串值,那么它将打开标记为“主页”的记录。这使您可以拥有一个将被显示的“默认”页面。
<%@ Page Language="vb" Debug=true %>
<%@ import Namespace="System.Data.OLEDB" %>
<!-- #INCLUDE FILE="include.aspx" -->
<script language="vb" runat="server">
dim mydata as string
Sub Page_Load(sender As Object, e As EventArgs)
Dim queryvalue = Request.QueryString("id")
If (IsNumeric(queryvalue)) then
Dim query As String = "Select pagedata FROM tblpages
WHERE id = " & queryvalue & ";"
Dim myConn As New OleDbConnection
("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbsource & "")
Dim myCmd As OleDbCommand = New OleDbCommand(query, myConn)
myConn.Open()
Dim myReader As OleDbDataReader = myCmd.ExecuteReader()
While myReader.Read()
mydata = (myReader("pagedata").tostring)
End While
'close connections'
myReader.Close()
myConn.Close()
MyConn = Nothing
Else
Dim query As String = _
"Select pagedata FROM tblpages WHERE homepage = 1;"
Dim myConn As New OleDbConnection _
("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbsource & "")
Dim myCmd As OleDbCommand = New OleDbCommand(query, myConn)
myConn.Open()
Dim myReader As OleDbDataReader = myCmd.ExecuteReader()
While myReader.Read()
mydata = (myReader("pagedata").tostring)
End While
'close connections'
myReader.Close()
myConn.Close()
MyConn = Nothing
End if
End Sub
</script>
<%=mydata%>
一个简单的页面列表使得从你的网站添加或删除“页面”变得容易。所有页面都存储在 MS Access 数据库中。

下面的代码基本上循环遍历数据库,然后使用 repeater 在页面上显示数据。此页面还包含创建新页面的链接,这将简单地“插入”到数据库中。此列表还允许您设置哪个页面将是如前所述的“默认”页面。
<script runat="server" language="vb">
Sub btnHelp_OnClick(Src As Object, E As EventArgs)
lblhelp.visible = true
End Sub
Sub Page_Load(sender As Object, e As EventArgs)
lblhelp.Visible = False
if session("loggedin") = "" then
response.redirect("login.aspx")
end if
dim homepage as integer = request.querystring("homepage")
dim homepageid as integer = request.querystring("id")
if homepage = 1 then
'set all to 0 '
Dim strSQL As String = "UPDATE tblPages SET homepage = 0;"
Dim iConn As New OleDbConnection(_
"PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbsource)
Dim iCmd As New OleDbCommand(strSQL, iconn)
iConn.Open()
iCmd.ExecuteReader()
iConn.Close()
'set homepage '
Dim strSQL2 As String = _
"UPDATE tblPages SET homepage = 1 where ID = " & homepageid & ";"
Dim iConn2 As _
New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" &_
dbsource)
Dim iCmd2 As New OleDbCommand(strSQL2, iconn2)
iConn2.Open()
iCmd2.ExecuteReader()
iConn2.Close()
end if
dim newpage as integer = request.querystring("newpage")
if newpage = 1 then
Dim strSQL As String = "INSERT INTO tblPages(pagename, pagedata, _
homepage)
VALUES('*new page description*', '<html>" & vbcrlf & "<head>" & vbcrlf &_
"<title>Untitled</title>" & vbcrlf & vbcrlf & "</head>" & vbcrlf &_
"<body>" & vbcrlf & vbcrlf & vbcrlf & "</body>" & vbcrlf & "</html>',
0);"
Dim iConn As New OleDbConnection( _
"PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbsource)
Dim iCmd As New OleDbCommand(strSQL, iconn)
iConn.Open()
iCmd.ExecuteReader()
iConn.Close()
end if
dim deleteid as integer = request.querystring("deleteid")
if deleteid > 0 then
Dim queryvalue = Request.QueryString("deleteid")
Dim strSQL As String = "DELETE FROM tblPages WHERE ID = " &_
queryvalue & ";"
Dim dconn As New OleDbConnection(_
"PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbsource)
Dim iCmd As New OleDbCommand(strSQL, dconn)
dconn.Open()
iCmd.ExecuteReader()
dconn.Close()
end if
Dim query As String = _
"Select pagename,id,homepage FROM tblpages order by pagename;"
Dim myConn As New OleDbConnection(_
"PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbsource & "")
Dim Cmd as New OLEDBCommand(query,myConn)
MyConn.Open()
dim dbread
dbread=Cmd.ExecuteReader()
tblpages.DataSource=dbread
tblpages.DataBind()
dbread.Close()
myconn.Close()
dim numberofresults as string = tblpages.Items.Count
lblrcount.text = numberofresults & " pages found"
dim idvalue as string = id
End Sub
</script>
<h3 class="myfont" title="visit www.basic-cms.com for updates">Basic CMS -
Page Management</h3>
<p><a href="list.aspx?newpage=1" title="click here to create a new page">
Create New Page</a></p>
<asp:Repeater id="tblpages" runat="server">
<HeaderTemplate>
<table border="1" cellspacing="0" cellpadding="4" bordercolor="#000000"
class="myfont">
<tr bgcolor="#b0c4de">
<th>ID</th>
<th>Page Description</th>
<th>Default</th>
<th>URL</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</HeaderTemplate>
<AlternatingItemTemplate>
<tr bgcolor="#FFFFFF">
<td><%#Container.DataItem("id")%> </td>
<td><%#Container.DataItem("pagename")%> </td>
<td><a href="list.aspx?id=<%#Container.DataItem("id")%>&homepage=1"
title="Click to set as home page">
<%#Container.DataItem("homepage")%></a> </td>
<td><a href="default.aspx?id=<%#Container.DataItem("id")%>
" title="default.aspx?id=<%#Container.DataItem("id")%>"
target="_blank">default.aspx?id=<%#Container.DataItem("id")%></td>
<td><a href="edit.aspx?id=<%#Container.DataItem("id")%>"
title="Click to Edit">Edit</a> </td>
<td><a href="list.aspx?deleteid=<%#Container.DataItem("id")%>"
title="Delete!">Delete</a></td>
</tr>
</AlternatingItemTemplate>
<ItemTemplate>
<tr bgcolor="#f0f0f0">
<td><%#Container.DataItem("id")%> </td>
<td><%#Container.DataItem("pagename")%> </td>
<td><a href="list.aspx?id=<%#Container.DataItem("id")%>&homepage=1"
title="Click to set as home page">
<%#Container.DataItem("homepage")%></a> </td>
<td><a href="default.aspx?id=<%#Container.DataItem("id")%>"
title="default.aspx?id=<%#Container.DataItem("id")%>" target="_blank">
default.aspx?id=<%#Container.DataItem("id")%></td>
<td><a href="edit.aspx?id=<%#Container.DataItem("id")%>"
title="Click to Edit">Edit</a> </td>
<td><a href="list.aspx?deleteid=<%#Container.DataItem("id")%>"
title="Delete!"
onclick="return confirm('Are you sure you want to delete?')">Delete</a></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:Label Id="lblrcount" RunAt="server" CssClass="myfont"
ForeColor="#000000" font-size="12" />
<form runat="server">
<asp:Button Id="btnShowHelp" RunAt="server"
Text="Help" OnClick="btnHelp_OnClick" class="myfont"
title="click for basic help" />
</form>
<asp:Label Id="lblhelp" RunAt="server" class="myfont"
Text="<p><strong>Page Name:</strong>
The page description</p><p><strong>Default:</strong> 1=default, or
start page. Click to set.</p>
<p><strong>URL:</strong> To link to
this page, use this location.</p><p><strong>Edit:</strong> Click Edit to
edit the page.</p>
<p><strong>Delete:</strong> Click Delete to delete the page.</p>" />
简单的文件管理器使用所有的 .NET 代码,不需要第三方的组件。此文件管理器将允许您上传文件和删除文件,以及查看上传目录中的文件。

<%@ Page Language="vb" Debug=true ValidateRequest=false %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- #INCLUDE FILE="include.aspx" -->
<!-- #INCLUDE FILE="menu.aspx" -->
<html>
<head>
<title>File Manager</title>
<script runat="server" language="vb">
Sub Page_Load(sender As Object, e As EventArgs)
if session("loggedin") = "" then
response.redirect("login.aspx")
end if
show_files()
End Sub
Sub Show_files
Dim file As String
Me.ListBox1.Items.Clear()
Dim files() As String = Directory.GetFiles(uploadpath)
For Each file In files
Me.ListBox1.Items.Add(FileNameWithoutExtension(file))
Next
End Sub
sub updatelist_Click(Sender as Object, e as EventArgs)
show_files()
end sub
sub del_Click(Sender as Object, e as EventArgs)
uploaddetails.visible = false
dim deletefile as string = request.form("listbox1")
if deletefile <> "" then
deletefile = uploadpath & deletefile
File.Delete(deletefile)
else
nofile.visible = true
nofile.InnerHtml = "No file was selected to delete."
Span1.visible = false
end if
show_files
end sub
Sub Upload_Click(Sender as Object, e as EventArgs)
FileName.InnerHtml = MyFile.PostedFile.FileName
FileContent.InnerHtml = MyFile.PostedFile.ContentType
FileSize.InnerHtml = MyFile.PostedFile.ContentLength
UploadDetails.visible = True
Dim strFileName as string = MyFile.PostedFile.FileName
Dim c as string = System.IO.Path.GetFileName(strFileName)
c = REPLACE(c," ","_")
if strFileName <> "" then
MyFile.PostedFile.SaveAs(uploadpath + c)
else
nofile.visible = false
Span1.visible = true
Span1.InnerHtml = "No file was selected to upload."
end if
show_files()
End Sub
Public Function FileNameWithoutExtension(ByVal FullPath As String) As String
Return System.IO.Path.GetFileName(FullPath)
End Function
</script>
<head>
<body style="font-family: Arial, Helvetica, sans-serif;">
<h3>Basic CMS - File Management</h3>
<hr width="50%" style="text-align: left;">
<Form Method="Post" EncType="Multipart/Form-Data" RunAt="Server">
<h3>File Upload </h3>
<Input ID="MyFile" Type="File" RunAt="Server" Size="40">
<p>Click browse, choose file, then click upload</p>
<Input Type="Submit" Value="Upload" OnServerclick="Upload_Click"
RunAt="Server">
<P><Div ID="UploadDetails" Visible="False" RunAt="Server">
File Name: <Span ID="FileName" RunAt="Server"/>
<BR>File Content: <Span ID="FileContent" RunAt="Server"/>
<BR>File Size: <Span ID="FileSize" RunAt="Server"/> bytes
<BR></Div> <Span ID="Span1" Style="Color:Red" RunAt="Server"/>
</p>
<hr width="50%" style="text-align: left;">
<h3>File Listing</h3>
<p><asp:ListBox Id="listbox1" RunAt="server" Width="250" Rows="5" /></p>
<p>Select file and click delete to remove</p>
<input type="submit" name="del" value="Delete" OnServerclick="del_Click"
RunAt="Server">
<input type="submit" name="refresh" value="refresh list"
OnServerclick="updatelist_Click" RunAt="Server">
</Form>
<Span ID="nofile" Style="Color:Red" RunAt="Server"/>
<hr width="50%" style="text-align: left;">
<p><a href="upload.aspx">Refresh Page</a></p>
要完整下载所有代码和文件,请访问 此站点
是的,这个系统非常基础,但有时简单和基础更好。
我对 .NET 相当陌生,正在尝试将我的技能从经典的 ASP 转移过来。所以如果你发现任何可以做得更好的地方,或者如果有什么地方工作不正常,请告诉我。
希望你喜欢它!