dotnetnuke:C#开发DotNetNuke初试( 3)

   4添加代码

  在本系列篇中我们先学习了建立数据库脚本大家把那段代码拷贝到“~DesktopModulesFantom"文件夹下“01.00.00.SqlDataProvider”文件中把这个文件中原有东西都去掉

  在App_Code下Fantom文件夹中建立两个类个是实体类"ArticleInfo.cs",另个是实体操作类"ArticleController.cs"其内容暂时先别管先在此文件夹个"DataProvider.cs"文件中抽象思路方法(Abstract Method)中添加如下新思路方法:

    public abstract void AddArticle( Title, Content,DateTime CreateTime , Author);
    public abstract void DeleteArticle( Id);
    public abstract void UpdateArticle( Id, Titlec, Content,DateTime CreateTime , Author);
    public abstract IDataReader GetArticleById( Id);
    public abstract IDataReader GetAll;


  然后在继承它类"SqlDataProvider.cs"中实现这些抽象思路方法代码如下:

         public override void AddArticle( Title, Content,DateTime CreateTime, Author)
    {
      SqlHelper.ExecuteNonQuery(ConnectionString, GetFullyQualiedName("F_ARTICLE_CREATE"), Title, Content,CreateTime, Author);
    }
    public override void DeleteArticle( Id)
    {
      SqlHelper.ExecuteNonQuery(ConnectionString, GetFullyQualiedName("F_ARTICLE_DELETE"), Id);
    }
    public override void UpdateArticle( Id, Titlec, Content,DateTime CreateTime, Author)
    {
      SqlHelper.ExecuteNonQuery(ConnectionString, GetFullyQualiedName("F_ARTICLE_UPDATE"), Id, Titlec, Content,CreateTime, Author);
    }
    public override IDataReader GetArticleById( Id)
    {
       SqlHelper.ExecuteReader(ConnectionString, GetFullyQualiedName("F_ARTICLE_GETDETAILS"), Id);//F_ARTICLE_GETDETAILS
    }
    public override IDataReader GetAll
    {
       SqlHelper.ExecuteReader(ConnectionString, GetFullyQualiedName("F_ARTICLE_GETALL"));
    }


  回头再来看我们的前添加类"ArticleInfo.cs"添加其代码如下:

     using ;
/**//// <summary>
/// ArticleInfo 摘要介绍说明
/// </summary>
Fantom.Modules.MyModule
{
  public ArticleInfo
  {
    private _id;
    private _title;
    private _content;
    private DateTime _createTime;
    private _author;
    public ArticleInfo
    {
      //
      // TODO: 在此处添加构造逻辑
      //
    }
    public ArticleInfo( id, title, content, DateTime createTime, author)
    {
      _id = id;
      _title = title;
      _content = content;
      _author = author;
      _createTime = createTime;
    }
    public Id
    {
      get { _id; }
       { _id = value; }
    }
    public Title
    {
      get { _title; }
       { _title = value; }
    }
    public Content
    {
      get { _content; }
       { _content = value; }
    }
    public DateTime CreateTime
    {
      get { _createTime; }
       { _createTime = value; }
    }
    public Author
    {
      get { _author; }
       { _author = value; }
    }
  }
}
在类"ArticleController.cs"中写下如下代码:

  Code

1using ;
2using DotNetNuke;
3using DotNetNuke.Common;
4using DotNetNuke.Common.Utilities;
5using DotNetNuke.Entities.Modules;
6using DotNetNuke.Services.Search;
7using .Collections.Generic;
8
9/**//// <summary>
10/// ArticleController 摘要介绍说明
11/// </summary>
12///
13 Fantom.Modules.MyModule
14{
15  public ArticleController
16  {
17    public ArticleController
18    {
19      //
20      // TODO: 在此处添加构造逻辑
21      //
22    }
23
24    Public Methods#region Public Methods
25    public void AddArticle(ArticleInfo article)
26    {
27      DataProvider.Instance.AddArticle(article.Title, article.Content, article.CreateTime, article.Author);
28    }
29
30    public void DeleteArticle( articleId)
31    {
32      DataProvider.Instance.DeleteArticle(articleId);
33    }
34
35    public void UpdateArticle(ArticleInfo article)
36    {
37      DataProvider.Instance.UpdateArticle(article.Id, article.Title, article.Content, article.CreateTime, article.Author);
38    }
39    public ArticleInfo GetArticleById( articleId)
40    {
41       CBO.FillObject<ArticleInfo>(DataProvider.Instance.GetArticleById(articleId));
42    }
43    public List<ArticleInfo> GetArticleAll
44    {
45       CBO.FillCollection<ArticleInfo>(DataProvider.Instance.GetAll);
46    }
47    #endregion
48  }
49}
在配置文件"MyModule.dnn"中我们可能看到"App_code"文件夹下类都在此注册我们也照猫画虎把我们自己写类也在此注册如下:

         <file>
     <path>[app_code]</path>
     <name>ArticleController.cs</name>
    </file>
    <file>
     <path>[app_code]</path>
     <name>ArticleInfo.cs</name>
    </file>
到此为止我们就短在用户界面上这些类中思路方法来实现各种功能这里我们主要用到ViewMyModule.ascxControl控件打开这个Control控件把源代码改成如下如示:

     <%@ Control language="C#" Inherits="Fantom.Modules.MyModule.ViewMyModule" CodeFile="ViewMyModule.ascx.cs" AutoEventWireup="true"%>
<asp:Panel ID="Panel1" runat="server" Height="295px" Width="399px"><div>
  Title:&nbsp; &nbsp;<br />
  <asp:TextBox ID="txtTitle" runat ="server" Width="100%"></asp:TextBox></div>
<div>
  Author:<asp:TextBox ID="txtAuthor" runat="server" Width="100%" ></asp:TextBox></div>
<div>
  Content:<asp:TextBox ID="txtContent" runat="server" Height="234px" Width="100%" TextMode="MultiLine"></asp:TextBox></div><div><asp:Button ID="btnAdd" Text="Add" runat="server" Width="59px" _disibledevent= (DataProvider)Reflection.CreateObject("data", "YourCompany.Modules.MyModule", "");把"YourCompany"改成"Fantom"(要是提高改了更好)还有处是把"SqlDataProvider.cs“文件中"private const ModuleQualier"值改为空("")



   5压缩上传

  压缩要"zip"格式把整个项目压缩成Fantom.zip.然后在DNN"主机管理"下"模块定义"中选择"上传新模块"把刚刚压缩Fantom.zip上传

  返回"模块定义"页面选择MyModule模块前编辑按钮进入编辑页面把 3个Control控件路径改成"DesktopModules/Fantom.MyModule/Fantom/DesktopModules/Fantom/“(如ViewMyModule.ascx路径就为:DesktopModules/Fantom.MyModule/Fantom/DesktopModules/Fantom/ViewMyModule.ascx).

  到此为止所有切都做好了就剩下在页面中添加这个Control控件了至于添加和试用Control控件这里我就不再多说废话了大家去试试吧添加成功后要弹出个对话框介绍说明添加成功但我这头DNN弹出是 4个乱码个叹号(失败消息是)时间原因我还没有解决这个问题大家有兴趣可以完善到这里我们项目建立完毕

  结束语:本文只是个最基本例子旨在能够实现C#建立DNN模块总体来说没什么技术含量只是让大家能够明白些建立过程中细节由于暂时我们不用DNN做项目而本人又没有时间加以研究所以目前也只能做到这步了但我希望有更多这方面文章在园子里出现



Tags:  dotnetnuke中文 dotnetnuke汉化 dotnetnuke使用 dotnetnuke

延伸阅读

最新评论

发表评论