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

本文关键字:方式更 表单 操作 程序 何根 会话 变量 | 更新日期: 2023-09-27 18:25:59

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


<form id="myform" action="I wanna to change it dynamically" method="post" > 
    <%-------------%> 
</form>

<script type="text/javascript">
    function submitform()
    {
      document.myform.submit();
    }
</script>

例如:

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"添加到表单标签中):

标记:

<form id="myform" runat="server" action="" method="post" > 
    <%-------------%> 
</form>

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

试试这个

if(条件1)form1.Attributes.Add("action"、"My Action1");否则如果(条件2)form1.Attributes.Add("action"、"My Action2");