整理了"培练营"课程中同学们的提问和老师的精彩解答(二)

ntwuhaohao 2008-10-25 01:20:20
加精
学员:ntwuhaohao
在我的相册示例中
for(var i=0;i<imgs.length-2;i+=3)
{

link="<a href='"+imgs[i]+"'";
link+=" onclick='return flase;'";
link+=" onmouseover=\"return showPic('"+imgs[i+1] +"',this.href);\"";
link+=">"+imgs[i+2]+"</a>";
pic_list.innerHTML+=link;
}
请老师把上述代码解释一下,谢谢
还有就是我点左边的图片列表,出来的图片都很大,都撑出来了
回答人:polarstar (.NET学习顾问)
function init()
{
var imgs=[
"images/Autumn_Leaves.jpg","秋天的树叶,尽显成熟与沧桑。" ,"秋叶",
"images/Dock.jpg" ,"夕阳西下,何处是人生之船的码头?", "码头",
"images/Forest.jpg", "蜿蜒的小路在森林中延伸……","森林小路",
"images/Forest_Flowers.jpg","野外的小花,自由自在的生命。","从林小花",
"images/Garden.jpg", "在金色的秋天,尽享绽放的喜阅!","野菊怒放",
"images/Waterfall.jpg", "欢畅的小溪,你将流向何方","潺潺流水"];
var pic_index=document.getElementById("pic_index");

var url,link,intr;
for(var i=0;i<imgs.length-2;i+=3)
{
//其实下面是构造一个超链接的代码,超链接的格式是:<a href='images/Garden.jpg' onclick='return false;' onmouseover="return ShowPic('在金色的秋天,尽享绽放的喜阅!','iamges/Garden.jpg');">野菊怒放<a>
link="<a href='"+imgs[i]+"'";//把图片的路径加到这个超链接上
link+=" onclick='return flase;'";//点击时避免回发
link+=" onmouseover=\"return ShowPic('"+imgs[i+1]+"',this.href);\"";//设置鼠标悬停事件,当鼠标放到上面时执行函数ShowPic并且把图片的描述imgs[i+1]和路径传给函数
link+=">"+imgs[i+2]+"</a>";//把图片标题imgs[i+2]作为这个超链接的显示文本
pic_index.innerHTML+=link;//把这个超链接加到id为"pic_index"的div里面显示
}
}
学员:poloyzhang
经常看到有 "{0}" 不理解意思和用法. 有时候我自己写在代码中反而用不起来.出错. 这个 东西 不要有什么可以代替. 要的话又怎么样的. 困扰了很久.
MessageBox.Show( "{0} is not a valid fiel or directory ", path );
回答人:polarstar (.NET学习顾问)
DataFormatString="{0:格式字符串}"
我们知道在DataFormatString 中的 {0} 表示数据本身,而在冒号后面的格式字符串代表所们希望数据显示的格式;另外在指定的格式符号后可以指定小数所要显示的位数。例如原来的数据为「12.34」,若格式设定为 {0:N1},则输出为「12.3」。其常用的数值格式如下表所示:
格式字符串 资料 结果
"{0:C}" 12345.6789 $12,345.68
"{0:C}" -12345.6789 ($12,345.68)
"{0:D}" 12345 12345
"{0:D8}" 12345 00012345
"{0:E}" 12345.6789 1234568E+004
"{0:E10}" 12345.6789 1.2345678900E+004
"{0:F}" 12345.6789 12345.68
"{0:F0}" 12345.6789 12346
"{0:G}" 12345.6789 12345.6789
"{0:G7}" 123456789 1.234568E8
"{0:N}" 12345.6789 12,345.68
"{0:N4}" 123456789 123,456,789.0000
"Total: {0:C}" 12345.6789 Total: $12345.68
{0}就没有格式了,表示数据本身那样显示
string s = string.Format("a={0},b={1},c={3}",1,"2","I 'm a c");//执行后c的值是"a=1,b=2,c=I 'm a c";
学员:曾平
非常感谢上次给予我的帮助!
我看了金老师的在线相册,不像是给初学者的, 我看了半天,也只看出个大概,比如:btn.Command += new CommandEventHandler(btn_Command);就没怎么看懂, 能不能不用用户控件实现在线相册, 看去有点绕, 简单一点行吗,这毕竟是ASP.net基础课啊,不好意思,水平有限!
如有可能,希望给一个不用用户控件实现的代码!先谢谢了!btn.Command += new CommandEventHandler(btn_Command);如果用VB来写应该怎样写!
btn.Command = btn.Command & New CommandEventHandler(btn_Command)总是有问题,为什么?
回答人:polarstar (.NET学习顾问)
刚开始学有点吃力是正常的,希望你可以克服困难。
btn.Command += new CommandEventHandler(btn_Command);
是对一个按钮事件管理它的处理函数,"btn"是按钮的名称,"Command"是一个事件,当按钮被点击或者定义的关联命令被激活后发生
Button的事件还有Click按钮被点击的时候发生,DataBinding当控件数据绑定表达式将要执行时发生,Disposed当控件被回收处理后发生,Init当页面被初始化后发生,Load当页面被加载后发生,PreRender当页面被呈现的时候发生,Unload当页面被卸载后发生。
btn.Command += new CommandEventHandler(btn_Command);表示把Command事件关联到函数btn_Command,这样当Command事件发生时(例如点击了按钮),这个函数就会执行。
VB的写法是在处理函数后加Handles btn.Command,其实你只要在可视化编辑界面中选中按钮,点右键选择“属性”,在属性框中点击事件图标,所有的事件都列举在那里,只要双击一下对应的事件就能就能自动创建事件关联和处理函数。
这种写法是错误的btn.Command = btn.Command & New CommandEventHandler(btn_Command)
事件关联必须使用+=来关联
学员:ntwuhaohao
在做Cookie示例,提示未将对像设置引用到对像的实例。不知是哪出了问题
protected void btnLogin_Click(object sender, EventArgs e)
{
//定义一个变量,接收文本框输入的值
string userName = this.txtusername.Text;
//定义一个接收另一个文本框的值
string password = this.txtpassword.Text;
//判断条件是否满足
if ((userName == "admin") && (password == "admin"))
{
//单选框选中,向服务器提交一个Cooklie
if (this.CheckBox1.Checked)
{
Request.Cookies["userName"].Value = userName;
}
else
{
Session["userName"] = userName;
}
Response.Redirect("Default.aspx");
}
else
{
lblinfo.Text = "对不起,用户名或密码不正确";
}
}
借误提示
Request.Cookies["userName"].Value = userName;未将对像设置引用到对像的实例
还有输入密码的时候,输入的内容怎么变成"*",我用的是文本框控件。
谢谢
回答人:polarstar (.NET学习顾问)
1。
Request.Cookies["userName"].Value = userName改成:
Response.Cookies.Add(new HttpCookie("userName",userName));或者
Response.Cookies["userName"].Value = userName;
更多关于Request和Response,可以看这里:http://www.itcast.net/community/view/307
2。
有两种方法:
1)把普通的TextBox控件的TextMode属性设置成TextMode="Password"
2)用工具箱中“HTML”里面的Input(Password)控件,并点右键选择“Run As Server Control”作为服务器控件,就可以在后台代码访问了。
学员:徐豫锋
自己正在学C#,前几天去朋友的公司参观了一下,学这么基础的有用吗,彻底迷茫了一回。。
朋友也是学c#的,2003年就开始软件开发的,他做的新青年网站生成系统,还在那年的“阿拉神灯”杯上拿了个铜奖。。
前几天去看了他公司,他们都是自己开发整合好功能的控件的(比如新闻模块、图文模块、个人博客模块、定位也很方便),用他们的软件基本上只要会word就能按要求实现功能了,最让人想不到的是,最进用上了Ajax技术后,完全实现了可见即可得,哎,功能太好了。。。
想想自己现在才学c#,还有什么竞争力,郁闷中。。。
回答人:polarstar (.NET学习顾问)
我们能够控制的只有现在和未来!
对于以前是否学了很多东西,是否很强、很高手,现在已经改变不了了,能做的就是:从现在起努力。如果不这样,未来就会后悔。
你说的那些,虽然很多功能模块是可以直接复用的,但是使用的人也必须会程序设计,因为可能要修改功能模块、组合功能模块,”只要会Word就能实现功能”我不是很赞成,至少做一个功能强大的软件是不可能的,基础还是要掌握。软件模块可重用性是软件设计的目标,一个合格的软件工程师不单单会用别人写好的东西,就是自己平时设计都要考虑可重用性,避免多次写重复的代码,这是更高一层的要求。
如果已经学了C#的同学当然可以跳过基础学习学一些软件总体设计、架构设计之类的甚至项目管理。但是如果才刚刚接触程序设计,那就没办法啦,只能从0开始啊。至于以后能不能“牛”那就看现在学得怎样了。
所以,要学就坚定决心,从现在做起,以后要做“牛人”。
掌握自己的现在和和未来,加油!
学员:陈健
配置错误
说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。
分析器错误信息: 无法识别的属性“type”。
源错误:
行 10: <configuration>
行 11: <configSections>
行 12: <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
行 13: <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
行 14: <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

源文件: D:\WINDOWS\SYSVOL\sysvol\ruc.com\scripts\20110_4\第二讲试验\OnlineAlbum\web.config 行: 12
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.2407; ASP.NET 版本:1.1.4322.2407 为何会出现无法识别的type属性?请指点。。
回答人:polarstar (.NET学习顾问)
1。不能把net framework3.5装上,而不装vs2008。
2。我没有在1。1下尝试打开3。5的网站,因为我目前使用的电脑没有装VS2003的,我个人也觉得没有必要再装VS2003了,你可以尝试把web.config删除再打开,不过我感觉应该是不可以打开的。
3。建议安装VS2005或VS2008,如果机器配置允许最好装VS2008,因为它可以兼容VS2005。
学员:abcdabcd987
看到天轰穿老师在做SqlHelper的时候,每一个都没有把conn关闭、释放资源,我不知道这是因为不用这样做,还是老师.........?
请告诉我一下!
回答人:polarstar (.NET学习顾问)
conn是静态变量,不释放也只创建一个对象,在实际项目中,为了节省反复连接、释放时间,是允许这样做的,如果SqlConnection对象是非精通对象或者局部变量则必须释放。
学员:陈健
<script type="text/javascript">
function ValidateData()
{
var txt=document.getElementById("Text1");
if(txt.value.length==0)
{
alert("必须填写内容!");
txt.focus();
return false;
}
var ret=window.confirm("将数据发送给服务器?");
if(ret==false)
{
var info=document.getElementById("info");
info.innerHTML="用户取消了数据发送";
//txt.value="";
txt.focus();
}
return ret;

}
</script>
return ret;//这句返回的是什么类型的数据呢?return又是把值传递到哪里?是否是c#代码捕获到了这个ret,然后执行了c#代码?谢谢!
回答人:polarstar (.NET学习顾问)
首先必须清楚理解:
1。这是javascript代码,javascript代码是在客户端执行的,就是在浏览网站的那个电脑执行,而不会在网站的服务器执行。
2。C#是服务端代码,服务端代码是在服务器执行的,不会在客户端执行。
C#代码和javacript代码是不能直接互相传值的,因为可能他们根本不在一个电脑执行。
在“<input id="Button1" type="submit" runat="server" onclick="return ValidateData();" onserverclick="ResposeToButtonClick" value="发送" />”中onclick="return ValidateData();"这个代码的作用是:当你点击按钮是执行ValidateData这个函数,如果这个函数返回值是true则点击会导致回发,即回发到服务器(刷新页面),如果这个函数返回值是false,则不会回发,即服务器根本不知道你是否点击了按钮,因为ValidateData这个函数是在客户端执行的。
解释一下上面的关键代码:
var ret=window.confirm("将数据发送给服务器?");
弹出一个对话框,这个对话框包括确定和取消按钮,如果你点击了“确定”则window.confirm这个函数返回值为true,即ret的值是true,否则window.confirm这个函数返回值为false,即ret的值是false。
你再读一下代码,应该可以理解。
回答人:amandag(高歌 .NET学习顾问)
return ret;//
这句返回的是什么类型的数据呢?
==
返回的是true或者false
return又是把值传递到哪里?
==
传递到调用方,也就是调用此javascript的地方
是否是c#代码捕获到了这个ret,然后执行了c#代码?谢谢!
==
和C#一点关系都没有,这是客户端脚本
...全文
340 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger_ok1 2008-11-09
  • 打赏
  • 举报
回复
路过学习~
bufan2162 2008-11-06
  • 打赏
  • 举报
回复
好乱的界面。
rion_yi 2008-10-30
  • 打赏
  • 举报
回复
aquariua 2008-10-29
  • 打赏
  • 举报
回复
留个记号
学习中
三下鱼 2008-10-26
  • 打赏
  • 举报
回复
感谢楼主
sunrise2199 2008-10-26
  • 打赏
  • 举报
回复
不错
yhy0611 2008-10-25
  • 打赏
  • 举报
回复
还是WEB,不知道是不是沙发

2,089

社区成员

发帖
与我相关
我的任务
社区描述
在线培训学习经验交流分享、优质课程资源共享。
社区管理员
  • IT课程大本营社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧