![](/icons/1956dou.gif)
在本系列
![](/icons/1956de.gif)
![](/icons/1956yi.gif)
![](/icons/1956dou.gif)
![](/icons/1956dou.gif)
![](/icons/1956de.gif)
![](/icons/1956dou.gif)
![](/icons/1956de.gif)
![](/icons/1956dou2.gif)
在App_Code下
![](/icons/1956de.gif)
![](/icons/1956dou.gif)
![](/icons/1956yi.gif)
![](/icons/1956yi.gif)
![](/icons/1956dou2.gif)
![](/icons/1956dou.gif)
![](/icons/1956de.gif)
![](/icons/1956de.gif)
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
;
然后在继承它
![](/icons/1956de.gif)
![](/icons/1956dou.gif)
public override void AddArticle(
Title,
Content,DateTime CreateTime,
Author)
{
SqlHelper.ExecuteNonQuery(ConnectionString, GetFullyQual
iedName("F_ARTICLE_CREATE"), Title, Content,CreateTime, Author);
}
public override void DeleteArticle(
Id)
{
SqlHelper.ExecuteNonQuery(ConnectionString, GetFullyQual
iedName("F_ARTICLE_DELETE"), Id);
}
public override void UpdateArticle(
Id,
Titlec,
Content,DateTime CreateTime,
Author)
{
SqlHelper.ExecuteNonQuery(ConnectionString, GetFullyQual
iedName("F_ARTICLE_UPDATE"), Id, Titlec, Content,CreateTime, Author);
}
public override IDataReader GetArticleById(
Id)
{
SqlHelper.ExecuteReader(ConnectionString, GetFullyQual
iedName("F_ARTICLE_GETDETAILS"), Id);//F_ARTICLE_GETDETAILS
}
public override IDataReader GetAll![](/icons/1956kh.gif)
{
SqlHelper.ExecuteReader(ConnectionString, GetFullyQual
iedName("F_ARTICLE_GETALL"));
}
回头再来看我们的前添加
![](/icons/1956de.gif)
![](/icons/1956dou.gif)
using
;
/**//// <summary>
/// ArticleInfo
摘要介绍说明
/// </summary>
Fantom.Modules.MyModule
{
public
ArticleInfo
{
private
_id;
private
_title;
private
_content;
private DateTime _createTime;
private
_author;
public ArticleInfo![](/icons/1956kh.gif)
{
//
// 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![](/icons/1956kh.gif)
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![](/icons/1956kh.gif)
44 {
45
CBO.FillCollection<ArticleInfo>(DataProvider.Instance
.GetAll
);
46 }
47 #endregion
48 }
49}
在配置文件"MyModule.dnn"中我们可能看到![](/icons/1956dou.gif)
![](/icons/1956de.gif)
![](/icons/1956yi.gif)
![](/icons/1956dou.gif)
![](/icons/1956dou.gif)
![](/icons/1956de.gif)
<file>
<path>[app_code]</path>
<name>ArticleController.cs</name>
</file>
<file>
<path>[app_code]</path>
<name>ArticleInfo.cs</name>
</file>
到此为止![](/icons/1956dou.gif)
![](/icons/1956diaoyong.gif)
![](/icons/1956de.gif)
![](/icons/1956dou2.gif)
![](/icons/1956dou.gif)
![](/icons/1956dou.gif)
<%@ 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: <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
ModuleQual
ier"
值改为空("")![](/icons/1956dou2.gif)
5
压缩上传
压缩要"zip"格式![](/icons/1956de.gif)
把整个项目压缩成Fantom.zip.然后在DNN
"主机管理"下
"模块定义"中选择"上传新模块"
把刚刚压缩
Fantom.zip上传![](/icons/1956dou2.gif)
返回"模块定义"页面
选择MyModule模块前
编辑按钮
进入编辑页面
把 3个Control控件
路径改成"DesktopModules/Fantom.MyModule/Fantom/DesktopModules/Fantom/“(如ViewMyModule.ascx
路径就为:DesktopModules/Fantom.MyModule/Fantom/DesktopModules/Fantom/ViewMyModule.ascx).
到此为止
所有![](/icons/1956de.gif)
切都做好了
就剩下在页面中添加这个Control控件了
至于添加和试用Control控件这里我就不再多说废话了
大家去试试吧
添加成功后要弹出
个对话框介绍说明添加成功
但我这头
DNN弹出
是 4个乱码
加
个叹号(失败
消息是
串
)![](/icons/1956dou.gif)
时间原因
我还没有解决这个问题
大家有兴趣可以完善
到这里
我们
项目建立完毕![](/icons/1956dou2.gif)
结束语:本文只是
个最基本
例子
旨在能够实现C#建立DNN模块
总体来说没什么技术含量
只是让大家能够明白
些建立过程中
细节
由于暂时我们不用DNN做项目
而本人又没有时间加以研究
所以目前也只能做到这
步了
但我希望有更多
这方面
文章在园子里出现
延伸阅读
最新评论