如何根据会话变量以编程方式更改表单操作?

如果我有一个form ,哪个action应根据某个会话变量而有所不同。 如何动态更改表单的操作,以便在客户端单击特定链接按钮时,我可以提交具有所需操作的表单。


 

  function submitform() { document.myform.submit(); }  

例如 :

 If session["emp"] = 1 then the action is /A.aspx If session["emp"] = 2 then the action is /B.aspx 

选项1

我通常在加载表单时将服务器值放在隐藏字段中,以便我可以在JavaScript中与它们进行交互:

 function submitform() { // Get URL that was set server-side for form submission var myHiddenObj = document.getElementById("<%= hdnServerValue.ClientID %>"); // Get form object var myFormObj = document.getElementById("myform"); // Change form action & submit myFormObj.action = myHiddenObj.value; myHiddenObj.submit(); } 

选项2

如果您只是希望更改表单操作并且不需要其他客户端处理,只需更改服务器上的表单操作(您需要将runat="server"添加到表单标记):

标记:

 
<%-------------%>

C#(或您首选的服务器端语言)

 if(Session["emp"].ToString() == "1") myform.Action = "A.aspx"; else if (Session["emp"].ToString() == "2") myform.Action = "B.aspx"; else // Handle neither 1 or 2 

试试这个


如果(condiotion1)
   form1.Attributes.Add(“action”,“My Action1”);
否则如果(condiotion2)
   form1.Attributes.Add(“action”,“My Action2”);