维生素C.net
Talents come from diligence, and knowledge is gained by accumulation 天才源于勤奋,知识源于积累。
难忘的1654天
博客园  首页  新随笔  新文章  联系  管理  订阅 订阅
随笔- 220  文章- 1  评论- 1643 
http的基础知识帮助减少代码量和复杂度的一个Demo

先看完RFC再看!

action属性在asp.net ajax上看来似乎出了点问题
,今天看到了唐兄的这篇文章,加上前天学到的一个知识,拿出来跟大家分享一下:

朋友遇到这样一个场景:需要把页面的某个control的值post到另一个页面来显示。html的post是对整个form做post操作,当这个form中其他元素的value比较大时这个form的post此时就不经济了。如果仅仅想把一个type="text"的input的元素的值传送到另一个页面怎么办?使用querystring方式传值是受url约束的,使用ajax方式那么我们还要动手写一些代码,当然还受sandbox的约束。那么我们来看下面这个Demo:

<form id="form2" action="show.aspx" method="post" target="mywindow">
<input id="txtbox1" name="txt1" type="text" value="维生素C.net 范维肖 fanweixiao" />
<input id="Button1" type="button" value="button" onclick="doSubmit()" />
</form>
<script type="text/javascript">
function doSubmit()
{
    window.open('','mywindow');
    document.forms[
"form2"
].submit();
}

</script> 

我们在Default.aspx中创建了一个form,指定了action到show.aspx页面,target指定了值mywindow。然后我们自己写了这个form的submit事件,首先window.open了一个空页面,并指定了与form的target相同的名字,然后让这个form提交。注意type="text"的input我们添加了name属性,并赋值为txt1。show.aspx页面的代码很简单:

protected void Page_Load(object sender, EventArgs e)
{
        Response.Write(Request[
"txt1"
]);
}
 


这样我们就通过action+target两个属性将我们需要的value直接灌入到了打开的空页面中了。

posted on 2007-07-19 00:41 维生素C.NET 阅读(2033) 评论(16)  编辑 收藏 所属分类: XHTML & Web Standard

发表评论
  回复  引用  查看    
2007-07-19 01:02 | FantasySoft      
感觉没有讲清楚,而且要实现楼主所说的功能,其实很简单,只要构建多一个form即可,form中的元素是动态构建的,需要提交什么就构建什么,也不需要再另外开一个窗口了。

至于action,只是ASP.NET默认都是将表单提交到当前页面的URL,所以,我们才会忽略了这个属性。如果使用J2EE或者LAMP架构来编写web应用程序,这个action属性是跑不掉的。

ASP.NET现有的编程架构确实让人容易有很多思维定势啊。。。
  回复  引用  查看    
2007-07-19 01:52 | 狂人      
是html知识,跟http没啥关系,另外解决ajax里form action的问题,我有一篇说的很细了,可以参考一下

window.open已经属于鸡肋了,在反弹出窗口呼声这么高加上包括浏览器本身都阻止弹出的情况下,楼主提供的方式未必能用
  回复  引用    
2007-07-19 01:55 | 泡泡在线游戏网 [未注册用户]
学习一下。。。。

--------------------------------------------
泡泡在线游戏网
http://www.popomei.cn
  回复  引用  查看    
2007-07-19 01:57 | 维生素C.NET      
@FantasySoft
ASP.NET现有的编程架构确实让人容易有很多思维定势啊。。。

对,就是想说明这个问题
  回复  引用  查看    
2007-07-19 02:00 | 维生素C.NET      
@狂人
与http有没有关系可以参考RFC。
window.open()旨在用在用来做个大家都熟悉的简单的demo,提供思路。
  回复  引用  查看    
2007-07-19 06:54 | Jeff Yang      
这在HTML编程年代(那时ASP简直不能用)是相当简单的。
  回复  引用  查看    
2007-07-19 07:14 | 布尔      
直接写target="_blank"就可以了,怎么这么想?
  回复  引用  查看    
2007-07-19 08:01 | 丁学      
对哦,直接target="_blank"加那几行JS都省了
  回复  引用    
2007-07-19 08:16 | gao [未注册用户]
html的post是对整个form做post操作,当这个form中其他元素的value比较大时这个form的post此时就不经济了。


但是我看楼主还是用的 http的post?没看出差别
  回复  引用  查看    
2007-07-19 08:53 | 浪子      
在aspx直接构造2个form是有点...

如果你一定要构造两个form,则动态创建一个iframe,在iframe里面做操作,post到当前页面可以,post到其他页面也可以。
  回复  引用    
2007-07-19 08:59 | n [未注册用户]
你的例子跟你想表达的意思不符
  回复  引用  查看    
2007-07-19 09:32 | Jeffrey Zhao      
html,不是http。
一个是标记语言,一个是通信协议。
  回复  引用  查看    
2007-07-19 09:35 | Go_Rush      
我怎么看不太明白你想说什么呀。

为什么不用 xmlhttp 的 post
  回复  引用  查看    
2007-07-19 11:04 | S.Sams      
有几种方案可以解决, 而且不用打开新窗口, 只需提交指定的数据
1. 用JS直接在Body后面动态创建一个 Form , 同时创建Input数据控件, 直接调用 submit().
2. 以Get的方式, 到一个隐藏的 IFrame 中.
3. 通过Ajax的功能去完成.
  回复  引用    
2007-10-16 18:40 | i don't [未注册用户]
mvp? Is it a junk here?
  回复  引用  查看    
2008-06-04 19:32 | 陈新丰      
不知道说什么,我水平低
社区  新闻  新用户注册  刷新评论列表  

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-07-19 09:43 编辑过
 
所属分类的其他文章:
· http的基础知识帮助减少代码量和复杂度的一个Demo
· Microsoft Expression Web Designer
· ASP.NET: State Server Gems
· lifework总结的的Enterprise Library v1.0概述
· Microsoft Visual Studio Extensions for WinFX Beta 1
· Unable to get the project ile from the web server错误的解决方法
· 一个OOP的课程设计,不难实现,贴出来请大家指正。
· 出窥.net上的Nemerle语言
· Mono 1.1.5 正式发布,密切关联.net 2.0
· 春天终于来了
最新IT新闻:
· 第一财经周刊:当前互联网世界正处无秩序时代
· Visual Studio 2008 SDK 1.1 发布
· 死敌VMware变身微软认证计划新成员
· 英特尔雅虎开发网络计算机频道
· Windows Live视频邮件9月9日开始测试
博客园新闻频道  博客园首页  社区
 



公告

view my mvp profile 看看有多少人来访问我的Blog了!
hotmail

<2008年6月>
日一二三四五六
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

与我联系

  • 发短消息

搜索

 

常用链接

  • 我的随笔
  • 我的空间
  • 我的短信
  • 我的评论
  • 更多链接
  • 我的参与
  • 我的新闻
  • 最新评论
  • 我的标签

留言簿(168)

  • 给我留言
  • 查看留言

我参与的团队

  • 北京.NET俱乐部(4/1449)
  • 烟台.NET俱乐部(0/47)
  • ASP.NET AJAX (Atlas)学习(0/1340)
  • MVP(微软最有价值专家)团队(1/540)
  • 博客园培训团队(0/110)
  • Silverlight学习与研究(0/282)
  • CLR基础研究团队(1/375)

随笔分类(148)

  • ASP.NET(26)
  • Code Warehouse(20)
  • IronRuby,DLR(2)
  • LINQ(3)
  • Reading(3)
  • Training@cnblogs(23)
  • Ubuntu(4)
  • Windows Live(6)
  • Windows Mobile(7)
  • XHTML & Web Standard(54)

随笔档案(220)

  • 2008年3月 (2)
  • 2008年1月 (3)
  • 2007年12月 (3)
  • 2007年9月 (1)
  • 2007年8月 (2)
  • 2007年7月 (3)
  • 2007年6月 (3)
  • 2007年3月 (4)
  • 2007年2月 (3)
  • 2007年1月 (1)
  • 2006年12月 (1)
  • 2006年11月 (8)
  • 2006年10月 (6)
  • 2006年9月 (11)
  • 2006年8月 (5)
  • 2006年7月 (4)
  • 2006年6月 (1)
  • 2006年5月 (10)
  • 2006年4月 (8)
  • 2006年2月 (2)
  • 2006年1月 (1)
  • 2005年12月 (11)
  • 2005年11月 (13)
  • 2005年10月 (3)
  • 2005年9月 (1)
  • 2005年8月 (4)
  • 2005年7月 (3)
  • 2005年6月 (4)
  • 2005年4月 (5)
  • 2005年3月 (10)
  • 2005年2月 (7)
  • 2005年1月 (28)
  • 2004年12月 (15)
  • 2004年11月 (10)
  • 2004年10月 (5)
  • 2004年9月 (1)
  • 2004年6月 (13)
  • 2004年5月 (5)

文章档案(1)

  • 2005年5月 (1)

相册

  • ASPNET2tutorial
  • BlogUsing
  • My love and my friends
  • newGallery
  • 下一代网络图片

.net网站收藏

  • ASP.NET2.0 Tutorial
  • CodeBetter.com
  • F#
  • IIS.net
  • MS NewsGroup
  • NewsGroups
  • OnlyVC.org
  • VWD2005GuidedTour
  • ZDNet China软件技术专区

OSS 2007

  • Charsh
  • Kaneboy
  • Official Team Blog

Python

  • BeginnersGuide

好友的BLOG

  • DemoFox@JoyCode
  • DflyingChen
  • dudu
  • EricLee
  • hbifts
  • idior
  • Jesee Qing
  • Lion
  • Rickie
  • Samuel
  • Steph`s Website
  • 翱翔.Net
  • 陈敬熙
  • 发条木偶
  • 葛涵涛
  • 古道风
  • 寒枫天伤
  • 老猫の理想
  • 刘老师
  • 刘彦博
  • 吕震宇
  • 木野狐
  • 佘广
  • 王sir
  • 小涛
  • 小新
  • 肖老师
  • 旋哥

积分与排名

  • 积分 - 393467
  • 排名 - 53

最新评论

  • 1. re: .NET Beginner Training Step by Step开始启动
  • 申请加入
  • --Winston
  • 2. re: .NET Beginner Training Step by Step开始启动
  • 申请加入
  • --Birdshover
  • 3. re: .NET Beginner Training Step by Step开始启动
  • 喜欢没有理由!
    申请加入
  • --倔强
  • 4. re: .NET Beginner Training Step by Step开始启动
  • 申请加入
  • --清道夫-WPF
  • 5. re: .NET Beginner Training Step by Step开始启动
  • 申请加入,向大家学习
  • --ten.psa

阅读排行榜

  • 1. 英文名字及含义(25074)
  • 2. SQL Server 2005 Remote Access(14897)
  • 3. Visual Studio 2005 Team Edition和SQL Server 2005的下载(14283)
  • 4. Windows Installer 3.1(11435)
  • 5. Visual Studio 2005 Professional Released(10928)

评论排行榜

  • 1. .NET Beginner Training Step by Step开始启动(317)
  • 2. Windows Live Messenger 8.0 Beta 的邀请(100)
  • 3. 加入[ 下一代网络web技术(Next Generation Web Application)团队Blog ](88)
  • 4. 博客园新手.net技术培训活动(55)
  • 5. 为什么在vista上做开发?(54)
Copyright ©2008 维生素C.NET