ASP.NET MVC+JQuery+CKEditor系统开发

前一段时间做了两个关于ASP.NET MVC的应用,忙里偷闲,总结一下前一段时间的工作,同时也与大家分享一下在系统开发中遇到的问题以及解决办法,希望对大家有些帮助吧!

开发:

关于开发模式:

1. 将数据库访问层单独拿出来写,建立一个类库,切记方法定义与实现相分离,提供系统的可复用性,在Model层中对数据访问类库中的方法进行封装;
2. 在数据访问类库中抛出异常,在Controller中进行捕获,对异常的内容,以用户可以理解方式展现出来;
3. 在View中,将公用的页面如(错误页面,消息提示页面都放在Shared文件夹中);
4. 将常量都拎出来,单独放在一个文件,这样便于系统系统的维护。如果需要修改,这样也可以减少修改工作量;
5. AOP编程,在Controller方法执行之前之后,执行插入的其他的代码,只要实现System.Web.Mvc.ActionFilterAttribute接口即可;
6. 将数据库的连接字段,及其它可能变动的信息都拿到xml文件中来,这样如果数据库的位置发生了变化,不需要直接修改系统,直接修改配置文件就好了;
 
关于JQuery:
在这两个项目中,JQuery都给予了极大的帮助
1. 前台验证,对提交表单中的文本框,下拉菜单及单选框、复选框都给予的很好的支持;
2. 选择器,JQuery对DOM的操作也非常简单,插入一个DOM元素,修改样式,变得很轻松;
在这边要重点提到,height()方法,这个方法在改变div高度方面起到了非常大的帮助,由于在ASP.NET MVC中所有的页面都是由模板来的。而不同的页面的高度也一样,所以需要jQuery来动态的来控制高度;
3. 对异步调用的支持,$.get(),$.post()使用起来都非常方便;
 
调用dll
[DllImport("basicdll.dll")]
static extern void get_one_yc(int fac, int yc_dot, ref float yc_value);
调用dll的方法,只要使用属性标签DllImport,括号总显示的是dll的名称,下面是关于方法的描述
 
ACCESS:
1. 在Access数据库中使用SELECT TOP SIZE *的时候,如果使用ORDER BY,后面跟的字段一定要是记录的唯一标识,否则查询出来的结果会有问题,出现次序错乱;
2. Access数据库中的内置函数;
对时间字符串的操作:
对时间字符串进行赋值:logData = #2012-5-25#,使用“#”包围;
获取类型为时间的字段的操作:Year(LogDate), Month(LogDate), DateAdd("d", -1, "2012-5-25")
获取字段的年份,月份,以及对时间进行加减操作;
将字符串转换成双进度浮点数 Cdbl(attr1)
3. 关于OleDbCommand的操作;
String sql ="INSERT INTO table(attr1, attr2, attr3) VALUES (@attr1, @attr2, @attr3)";
cmd.Add(new OleDbParameter("@attr1","val"));
...
使用这种方式在赋值的时候,如果为赋值顺序发生颠倒的时候,例如上面举的例子,即使是给@attr1的值也可以赋值给attr。
 
数据库备份与还原:
对于Access数据库,说白了就是mdb文件的复制
 
定时采集操作:
对System.Timers.Timer的使用;
 
Session有效期的管理:
由于系统中需要用到登录用户的信息,所以我将用户的有些数据放在了Session中,但是在使用中发现,当你有一小段时间不操作的时候,Session就自动被清理了。高兴的是,在网上已经有相应的解决办法了
在Web.config配置文件中
<system.Web>
<!--表示session将保持有效两个小时-->
<sessionState timeout="120"/>
</system.Web>
 
ASP.NET MVC中关于Excel的下载问题:
将项目部署在Windows XP中,通过File()下载文件的时候,会出现问题,而在部署在Windows 7中没有任何问题,
可能存在的问题有:
1. 部署项目的操作系统上一定要装有Microsoft Offices软件
2. 在组件服务中-DCOM配置-对Microsoft Office进行设置
 
设置启动和激活权限访问权限,修改为自定义,添加Everyone用户组,点击确定。
 
关于CKEditor的使用:
1. 在ASP.NET MVC项目中使用CKEditor工具
需要配置的地方:
(1) <form>标签需要设置 enctype="multipart/form-data"
(2) 在相应Controller的方法中设置[ValidateInput(false)]标签,表示不需要输入验证
(3) 在<system.web><pages validateRequest = "false"></system.web>
(4) 由于在CKEditor已经移除了将图片上传至服务器上,然后在显示出来的功能,网上有相应的代码实现,我在这边也重新写一下

举例:
<%MvcForm form = Html.BeginForm("PerformUpdateContent", "Introduction", FormMethod.Post, new { enctype = "multipart/form-data" }); %>
<%=Html.TextArea("ckeditor", (ViewData["newsItem"] as DataAccessObject.Entity.News).NewsContent, new { @name = "ckeditor"})%>
<%form.EndForm(); %>
 
<script language="javascript" type="text/javascript">
    CKEDITOR.replace('ckeditor', { width: 790, height: 600 }, addUploadButton(this));
 
    function addUploadButton(editor) {
        CKEDITOR.on('dialogDefinition', function (ev) {
            var dialogName = ev.data.name;
            var dialogDefinition = ev.data.definition;
            if (dialogName == 'image') {
                var infoTab = dialogDefinition.getContents('info');
                infoTab.add({
                    type: 'button',
                    id: 'upload_image',
                    align: 'center',
                    label: '上传',
                    onClick: function (evt) {
                        var thisDialog = this.getDialog();
                        var txtUrlObj = thisDialog.getContentElement('info',
                            'txtUrl');
                        var txtUrlId = txtUrlObj.getInputElement().$.id;
                        addUploadImage(txtUrlId);
                    }
                }, 'browse');
            }
        });
    }

    function addUploadImage(theURLElementId) {
        var uploadUrl = "../ScienceNews/FileUpload";
        var imgUrl = window.showModalDialog(uploadUrl, null, "dialogWidth=350 px; dialogHeight=150px; ");
        var urlObj = document.getElementById(theURLElementId);
        urlObj.value = imgUrl;
        urlObj.fireEvent("onchange");
    }

</script>
 

 

部署:


在Windows XP IIS 5.1部署

1. 选择ASP.NET 版本

2. 在虚拟目录选项卡中,点击配置,在映射选项卡中,单击添加,添加.*扩展名,取消勾选检查文件是否存在

3.设置项目根目录的安全性,添加ASPNET账户;

安全选项卡中,点击添加按钮,在输入对象名来选择对话框中,添加ASPNET用户组,点击确定。

如果还是有问题,请将这个项目访问的其他文件夹也这么进行设置。

posted @ 2012-05-25 16:07  D.ove  阅读(1963)  评论(1编辑  收藏  举报