.net课设小结
学了一学期的.net课程,在期末做了一个课设,两周紧张的时间,将它圆满的做完了。回顾一下,感受颇多,下面将我这次遇到的问题及解决方法分享给大家。
一 :用SQL语言在数据库不能按预想的查找
我用的数据库是Access2010,网页与数据库的连接方法是ADO.NET。我想在数据库中查找一个数据,sql语句没有写错,但就是不出数据。查找了半天的错误都没找出,就去问老师了。在金大兵老师的排查中找到了问题所在:我建的数据表中一个字段可能是Access中的关键字,故在查找过程中没能按预计方式查询。
建议:用数据库时建的数据表的字段不要与数据库的关键字冲突。
二:动态绑定母版页
1:一般我们在加载母版页的顺序为:先建一个母版页,再建个网页,当在网页生成前,按照“选择母版页”的提示来加载母版页。而我是在建好了网页后才想到了加载母版页了,因此必须用代码为网页添加。在网上找了以下方法总结一下就是:在网页的OnPreInit事件中加载一句 MasterPageFile = "~/zongmubanye.master"(母版页所在的相对位置)。但经过应用这种方式是不可行的。
经过一段时间的查找解决了这个问题。先说一下解决的原理:如果按照我在网上查的方法,就会造成这些问题:1、母版页是不识别<body>等html代码的;2、即使可以原网页可以加载母版页,但母版页有一个原网页没有的控件:ContentPlaceHolder,母版页加载时会在原网页中查找这个控件,这样也造成加载不上。解决方法:将原网页中<html><head><body><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">的代码去掉,将<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>(根据实际情况自己添加代码),ID为Content2在中添加需要的控件,此时网页的设计视图失效,只能自己写代码。在网的后台加上OnPreInit事件,在其中加载一句 MasterPageFile = "~/zongmubanye.master"(母版页所在的相对位置)
2:如果在运行时提示:…的控件ContentPlaceHolder1_LinkButton1”必须放在具有 runat=server 的窗体标记内。则在源代码中将form添加上,并且它将所有控件都包含。例如<form id="form1" runat="server">
</from>
三:数据库连接方式
在代码中总是写数据库的连接方法是一件痛苦的事情,用什么方法解决好呢。经过一番努力将其解决。
解决方法:在配置文件<configuration>节点下<connectioStrings>下添加(sql数据库连接方式)<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>(Access数据库连接方式)<add name="shujuku" connectionString="provider=microsoft.ace.oledb.12.0;data source=C:/Users/an /Desktop/web/课设数据库/top10.accdb " providerName="System.Data.OleDb"/> 。在网页文件的CS代码中添加命名空间 using System.Configuration; 用一个字符串获取path = ConfigurationManager.ConnectionStrings["你在配置文件中起的名字,没有"].ToString();
四:判断Session是否建立
在两个网页传值,我用了Session这个内置对象,但我先从用Session获取值的页面在浏览器中查看提示错误。经过分析得到,对Session我还没用建立,怎么就获取他的值呢?因此,必须解决一个问题:判断Session是否建立。
解决方法:Session是否等于null,如果等于则未创建Session对象。例如Session[“username”]==null。
五:FreeTextBox编写好的文件,用别的控件将其读出,提示“从客户端中检测到有潜在危险的 Request.Form 值”
解决方法:先在配置文件中 将httpRuntime节点改成<httpRuntime requestValidationMode="2.0" /> ,再在*.aspx文件头中将添加validateRequest="false" ,例如<%@ Page validateRequest="false" %>
六:图片
现在的图片都比较大,一张普通的就有2~3MB,如果将它们直接放的数据库中,可以想象数据库会很庞大。解决这个问题的一个好方法就是在数据库中存储图片的路径,将图片统一放到一个文件夹中,这样便于管理,数据库又变得比较小了。一举两得。
另外在编程中图片也要起成字母或数字的名字,这样可以避免一些不必要的麻烦
浙公网安备 33010602011771号