如何根据会话变量以编程方式更改表单操作?
如果我有一个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”);