先看完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>
<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"]);
}
{
Response.Write(Request["txt1"]);
}
这样我们就通过action+target两个属性将我们需要的value直接灌入到了打开的空页面中了。