2009-11-16 70 views
1

我有用c#/ asp.net编写的多步骤webform。我正在尝试更改发布到网址分析原因的网址。我已经编写了下面的代码来更改客户端的url,但似乎并没有在最后使用参数发布到url。几乎喜欢它在客户端的onsubmit被改回。有任何想法吗?用javascript修改表单动作

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestNamespace.WebForm1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body onload="setaction(<%= step %>);"> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:Label ID="lblCurrentUrl" runat="server"></asp:Label> 
    <asp:Panel ID="panel1" runat="server"> 
    Panel 1<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
      Text="Button" /> 
    </asp:Panel> 
    <asp:Panel ID="panel2" runat="server" Visible="false"> 
    Panel 2<asp:Button ID="Button2" runat="server" onclick="Button2_Click" 
      Text="Button" /> 
    </asp:Panel> 
<asp:Panel ID="panel3" runat="server" Visible="false"> 
Panel 3<asp:Button ID="Button3" runat="server" onclick="Button3_Click" 
     Text="Button" /> 
</asp:Panel> 
<asp:Panel ID="panel4" runat="server" Visible="false"> 
Panel 4<asp:Button ID="Button4" runat="server" onclick="Button4_Click" 
     Text="Button" /> 
</asp:Panel>    
</div> 

    <script language="javascript" type="text/javascript"> 
     function setaction(step) { 
      var bdy = document.getElementsByTagName("body")[0]; 

      bdy.setAttribute("action", "webform1.aspx?step=" + step); 
      alert(document.location.href); 
     } 
</script> 
</form> 
</body> 
</html> 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace TestNamespace 
{ 
public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected int step; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     lblCurrentUrl.Text = Request.Url.ToString(); 
     if (IsPostBack) return; 

     step = 1; 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     panel1.Visible = false; 
     panel2.Visible = true; 
     step = 2; 
    } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 
     panel2.Visible = false; 
     panel3.Visible = true; 

     step = 3; 
    } 

    protected void Button3_Click(object sender, EventArgs e) 
    { 
     panel3.Visible = false; 
     panel4.Visible = true; 
     step = 4; 
    } 

    protected void Button4_Click(object sender, EventArgs e) 
    { 

    } 
} 
} 

回答

1

它看起来像你在身体而不是形式上设置动作。除非我错过了某些东西,否则您应该可以像这样修复问题:

function setaction(step) { 
    var frm = document.getElementsByTagName("form")[0]; 

    frm.setAttribute("action", "webform1.aspx?step=" + step); 
    alert(document.location.href); 
} 
+0

AAAAAAAAAAAAHHHHHHHHHHHHHHHHH。我想我只需要第二组眼睛。完全错过了。一直把我的头撞到墙上。谢谢。 – Darthg8r 2009-11-16 23:05:28

+0

哈哈,我一直在那里。 :) 乐于帮助。 – 2009-11-16 23:10:57