您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



从asp转asp.net的相关东东
狼子 发表于 2005-4-10 22:59:00 阅读全文 | 回复(2) | 引用通告 | 编辑

一、目录安排
http://www.tiantiansoft.com/bbs/dispbbs.asp?BoardID=40&ID=76384

一个网站总得有好的目录安排的,图片文件放images,公用的脚本放include,主要文件也放在同一个目录里,如果分细了,有时候也会按模块划分,每个模块的文件都放在自己的文件夹里。

在ASP里只需要直接新建文件夹就成,就算是用dw写,site面板也会自动检索出那个目录下的所有内容的,可是在用vs.net写asp.net时就没同,在我的电脑里新建的文件夹,vs.net一个都没认,新建时文件都被存在网站的根目录下了。

方法就是:在解决方案里,右击->添加->新建文件夹。然后相应的文件可以点击它所在的文件夹,右击->添加->添加web窗体。还有图片,点击图片文件夹后,右击->添加->添加现有项,选择图片后确定就成。

二、conn.asp嘛办?
http://www.tiantiansoft.com/bbs/dispbbs.asp?BoardID=40&ID=13374

conn.asp是用来连接数据库的,可是在asp.net里,文件要编译后才可以执行,在开发的时候是没可能知道客户的相关数据库信息的,临时改,又没法编译。

解决办法就是用web.config文件,在</system.web>和</configuration>之间,添加这个:
<appSettings>
  <add key="sqlconnectionstring" value="server=服务器名;database=数据库名;uid=用户名;password=密码" />
 </appSettings>
在读取的时候这样子来:
System.Configuration.ConfigurationSettings.AppSettings["sqlconnectionstring"]

比如说我要连接数据库:
SqlConnection MyConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["sqlconnectionstring"]);
MyConnection.Open();

三、<!--#i nclude file="../include/menu.asp"-->嘛办?
http://www.tiantiansoft.com/bbs/dispbbs.asp?BoardID=40&ID=78173

一个网站,一头一尾,一般都是每页一样的,在asp里,大家都习惯了用include来处理这些一样的内容,这样子就可以在要修改的时候,只改一个页面,用没着每个页面都去动了。可是在asp.net里,试过想要include一个aspx文件,出错了,一个页面只可以有一个runat="server"的form。也试过include一个inc文件,是可以的。我一开始就写了footer.inc:
<table width='768' align='center' border='0' class='topborder' cellpadding='0' cellspacing='0'>
<tr height='22' align='center'>
<td class='title_maintxt'>
版权所有 Copyright&copy; 2003-2004 <a href='首页地址'>公司名称</a>&nbsp&nbsp
<a href='#' onClick=this.style.behavior='url(#default#homepage)';this.setHomePage('首页地址');>设为首页</a>&nbsp&nbsp
<a href="javascript:window.external.addFavorite('首页地址','公司名称')">加入收藏</a>&nbsp&nbsp
业务办理
</td>
</tr>
</table>

问题看到了没?公司名称、首页地址,这些本来在数据库的用户系统表里应该有记录的,可是因为inc文件没法读取数据库,所以只可以被写死掉

解决的办法是使用web用户控件,在解决方案里,右击->添加web用户控件。写好的用户控件,在使用的时候只需要把它从解决方案里直接拖到当前页面就成,aspx页面会自动生成这样子的代码:
<%@ Register TagPrefix="uc1" TagName="footer" Src="../include/footer.ascx" %>
<uc1:footer id="Footer1" runat="server"></uc1:footer>

四、<!--#i nclude file="../include/function.asp"-->嘛办?
http://www.tiantiansoft.com/bbs/dispbbs.asp?BoardID=40&ID=77830

一个网站有好多大家都用到的函数,比如检测有没登录的,比如防SQL注入的,好多好多的这些函数,在asp.net里要嘛搞?

解决的办法就是自己写一个类,在解决方案里,右击->添加->添加新项,在模板那里,选择“类”。它会自动生成类似这样子的代码:
using 一堆通常都要用到的命名空间
namespace NNLL.include
{
  /// <summary>
  /// MyClass 的摘要说明。
  /// </summary>
  public class MyClass
  {
    public MyClass()
    {
      //
      // TODO: 在此处添加构造函数逻辑
      //
    }
  }
}

红色那个就是这个类所在的自定义的命名空间了,所有的方法都可以写在这里,在需要用到这些方法的页面,只需要加一句:using NNLL.include;就成了,调用时:
MyClass myclass=new MyClass();
myclass.我在类里定义的方法();

五、想在aspx页面里使用服务器端的变量
http://www.tiantiansoft.com/bbs/dispbbs.asp?BoardID=40&ID=78173

在asp里,服务器端脚本和客户端脚本是混合在一块的,要使用变量时只要<% =变量名 %>就成。可是在asp.net里,界面的设计和后台代码的编写被分离了,如果直接那样子写的话,连编译都通没过。

可以在cs文件里这样子定义:protected string id;然后在aspx文件里就可以用<%=id%>调用了,因为aspx页面在生成的时候会从cs文件里那个page类继承一个类的实例。

另外我也试过用Label控件或BoxText控件,就是在aspx文件里,加一个Visible=false的Label控件BoxText1,然后在cs文件里修改BoxText1的值,在aspx文件里相应的地方,可以用这个:<%# =BoxText1.Text %>

六、要用到JavaScript时嘛办?
http://www.tiantiansoft.com/bbs/dispbbs.asp?BoardID=40&ID=79020

这个问题,我也还没很搞的清,我还有一种和上面的贴子没同的情况,是今天晚上才想到的:比如说有BoxText1、BoxText2、BoxText3、BoxText4和一个提交Button,我需要的是检验这四个输入框,只要有一个输入了,就允许提交,我试着写过Page_Load事件里写:Button1.Attributes["onclick"]="return testinput();",然后在aspx文件里,写:
<script language="JavaScript">
  function testinput() {
     if(BoxText1.Text=="" && BoxText2.Text=="" && BoxText2.Text=="" && BoxText3.Text=="")
        return false;
     return true;
  }
</script>
可是报错了,我把上面的BoxText1.Text换成Form1.BoxText1.Value形式,也报错说Form1.BoxText1不是对象。

不过也有一些是处理出来了的,比如天堂教的这个:
Hyperlink2.Attributes["onclick"]="this.style.behavior='url(#default#homepage)';this.setHomePage('" + myClass.getAppWeb() + "')";
是用来处理上面提到的那个footer.ascx web用户控件里处理“设为首页”的功能的。

嗯,比如说要删除内容前,要先提醒一下用户,可以在Page_Load里这样子来:
Button2.Attributes["onclick"]="return confirm('您确认删除此新闻吗?');";

基本上从asp到asp.net,从代码的表现来搞,这样子都基本成了,就是搞过后,总觉的思想上有点没同,可是又说没出来。。。

Re:从asp转asp.net的相关东东
mountain315发表评论于2005-7-29 16:21:00 个人主页 | 引用 | 返回 | 删除 | 回复

第五个问题看这里:

http://www.tiantiansoft.com/bbs/dispbbs.asp?boardID=40&ID=95982

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.