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

<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

关于c# - 如何根据 session 变量以编程方式更改表单操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9465121/

10-12 00:21
查看更多