Как программно изменить действие формы в соответствии с переменной сеанса? - PullRequest
3 голосов
/ 27 февраля 2012

Если у меня есть 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

Ответы [ 2 ]

5 голосов
/ 27 февраля 2012

Вариант 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" к тегу формы):

Markup:

<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
0 голосов
/ 27 февраля 2012

Попробуйте это


if(condiotion1)
  form1.Attributes.Add("action", "My Action1");
else if(condiotion2)
  form1.Attributes.Add("action", "My Action2");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...