当前位置: 首页 > news >正文

从asp转asp.net的相关

一、目录安排

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

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

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

二、conn.asp嘛办?

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"-->嘛办?

一个网站,一头一尾,一般都是每页一样的,在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"-->嘛办?

一个网站有好多大家都用到的函数,比如检测有没登录的,比如防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页面里使用服务器端的变量

在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时嘛办?

这个问题,我也还没很搞的清,我还有一种和上面的贴子没同的情况,是今天晚上才想到的:比如说有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,从代码的表现来搞,这样子都基本成了,就是搞过后,总觉的思想上有点没同,可是又说没出来。。。

相关文章:

  • 设计模式之状态模式详解(State Pattern)
  • 浅谈DataSet 的用法
  • 多维数组和矩阵之顺时针打印二维数组
  • 各种数据库连接代码(JSP)
  • 多维数组与矩阵之0所在的行列清零
  • 多维数组与矩阵之之字形打印矩阵
  • 生姜有味的调色板
  • 设计模式之策略者模式详解(Strategy Pattern)
  • 利用J2ME里的RMS对记录进行排序
  • 设计模式之职责链(责任链)模式(ResponsibilityChain Pattern)
  • SWT GC的drawLine方法的一个隐藏Bug
  • 多维数组与矩阵之子数组的最大累加和
  • 游戏也是软件,J2ME游戏程序员不能忘本
  • 多维数组与矩阵之子矩阵的最大累加和
  • 本周技术关注:Oracle10G、MSSQL2005、MYSQL5: CLuster、Replication、Snapshot
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Bootstrap JS插件Alert源码分析
  • bootstrap创建登录注册页面
  • express + mock 让前后台并行开发
  • extract-text-webpack-plugin用法
  • JavaScript 一些 DOM 的知识点
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • oldjun 检测网站的经验
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Redis 中的布隆过滤器
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue-cli在webpack的配置文件探究
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 对象管理器(defineProperty)学习笔记
  • 给第三方使用接口的 URL 签名实现
  • 如何合理的规划jvm性能调优
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 设计模式走一遍---观察者模式
  • 一个完整Java Web项目背后的密码
  • python最赚钱的4个方向,你最心动的是哪个?
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​MySQL主从复制一致性检测
  • #pragma pack(1)
  • #宝哥教你#查看jquery绑定的事件函数
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (简单) HDU 2612 Find a way,BFS。
  • (转)Oracle存储过程编写经验和优化措施
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .NET Core 中插件式开发实现
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • /proc/vmstat 详解
  • [@Controller]4 详解@ModelAttribute