65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.59/5 (22投票s)

2004 年 7 月 9 日

3分钟阅读

viewsIcon

187189

downloadIcon

1

一个非常基础的基于 web 的内容管理系统,使用 ASP.NET 和 MS Access

Sample Image - basic-cms-small.jpg

引言

一个易于安装和使用,没有多余功能的基于 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 数据库中。

page list

下面的代码基本上循环遍历数据库,然后使用 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 代码,不需要第三方的组件。此文件管理器将允许您上传文件和删除文件,以及查看上传目录中的文件。

asp.net file manager
<%@ 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 转移过来。所以如果你发现任何可以做得更好的地方,或者如果有什么地方工作不正常,请告诉我。

希望你喜欢它!

如果您喜欢 PHP/MySQL,这里有一个 PHP 内容管理版本。

© . All rights reserved.