想实现将当前页面提交到别一个页面,并把值通过POST方法传过去,而且需要单独打开一个新页,以前用ASP可以很简单的实现,如下:
<form name="form1" method="post" action="2.asp" target="_blank">
<table>
<tr><td><input type="text" name="txt1"><input type=submit name="提交"></td></tr>
</table>
</form>可以,当我在.net下,要实现如上的功能(将本页的表单提交到新打开的页面中),在.net的<form>中还有TextBox, DrowDownList(此控件可以提交)等服务器控件,我也将<form target="_blank">属性加上了,实现不了,请问如何实现?

解决方案 »

  1.   

    1,你可以<form>中的runat=server去掉,
    2,再可以用Server.Transfer 或者 Response.Redirect重定向 
      

  2.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewPage.aspx.cs" Inherits="NewPage" %>
      

  3.   

    Asp.net中的<form>是只提交给本页的,下面的2种数据传递方法,看看是否合适你的需求:1,在本页面的服务器端代码.cs文件中接收传递到服务器端的对象,在使用Response.Redirect("目标页.aspx?参数="+文本框的值)进行重定向。
    下面代码:
    Response.Redirect("target.aspx?myText="+this.TextBox1.Text);2,在本页的按钮事件中向客户端发送一个JavaScript脚本块,使用JavaScript脚本的Window.open方法来实现客户端弹出新页面功能,同时可以传递本页中文本框的值作为参数。
    下面是示例:
    protected void Button1_Click(object sender, EventArgs e)
        {
            //VS 2005中使用
            ClientScript.RegisterClientScriptBlock(this.GetType(), "MyWindow", "<SCRIPT>window.open('target.aspx?myText="+this.TextBox1.Text+"','MyWindow')</SCRIPT>");
            //VS 2003中使用
            //RegisterClientScriptBlock("", "<SCRIPT>window.open('Default.aspx','MyWindow')</SCRIPT>");
        }
    上面例子中按钮事件是在本页写的,window.open方法中的target.aspx就是你要弹出的新页面myText=this.TextBox1.Text 我想这个对于你做ASP的应该知道,它传递参数。'MyWindow'参数是为你的新开页面指定一个ID,用来防止多次点击按钮时会弹出多个页面,这样只能弹出一个页面。下面是在本页内写的方法,下面是target.aspx页接收后显示到页面的一句代码:
    protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(Request.QueryString["myText"].ToString());
        }
    在页面加载时获取请求字符串的myText变量中的内容来进行显示。我们看到上面2个例子一个是从服务器端进行页面重定向的,一个是使用客户端脚本块进行页面重定向的,2个例子中的目标页中代码完全一样,主要看需求是在服务器端还是在客户端进行处理。
      

  4.   

    我的意思是说,asp能做到的,asp.net一样能做到,
    只是asp.net有更好的做法。
    如果一定要按楼主的思路,aspx叶面也可以处理Request里面的信息。
    <form name="form1" method="post" action="2.aspx" target="_blank">
    <table>
    <tr><td><input type="text" name="txt1"><input type=submit name="提交"></td></tr>
    </table>
    </form>
    2.asp  改成 2.aspx
    然后在2.aspx里面用Request.Form["txt1"]取到txt1里面的value
      

  5.   

    <form name="form1" method="get" action="2.aspx" target="_blank">
    <table>
    <tr><td><input type="text" name="txt1"><input type=submit name="提交"></td></tr>
    </table>
    </form>
      

  6.   

    protected void Button1_Click(object sender, EventArgs e)
        {
            //VS 2005中使用
            ClientScript.RegisterClientScriptBlock(this.GetType(), "MyWindow", "<SCRIPT>window.open('target.aspx?myText="+this.TextBox1.Text+"','MyWindow')</SCRIPT>");
            //VS 2003中使用
            //RegisterClientScriptBlock("", "<SCRIPT>window.open('Default.aspx','MyWindow')</SCRIPT>");
        }这种方法我经常用的,很好用;楼主可以试试。
      

  7.   

    谢谢大家帮我解答,我确实遇到了在.net中要实现像我举例的功能tolot() ( ) 讲的两个方法,其实都可以,不过都不适合,第一种方法,我不想让参数以GET方法传,所以不适合,第二种方法用window.open,现在流氓软件这么多,基本window.open不起作用
      

  8.   

    Response.Redirect() windows.open() Server.Transfer()
      

  9.   

    设置Button 的postbackurl属性就ok了
    ps: .net 2.0中才有这个属性
      

  10.   

    服务器控件最后也变成客户端控件传到客户端的...
    ID不变,照样用Request.Form["ID"]取