Как динамически изменить атрибут действия aspnetForm на MasterPage - PullRequest
7 голосов
/ 10 марта 2009

Мы пытаемся динамически изменить атрибут Action основной формы ASP.NET на главной странице.

На странице есть переключатель, пользователь выбирает один из вариантов и нажимает кнопку «Отправить» при обратной передаче, основываясь на выборе, для которого должен быть установлен атрибут действия «Форма» и форма должна быть снова автоматически отправлена.

Мы пытались использовать JavaScript для того же.

document.forms[0].action = "option1.aspx";
document.forms[0].submit();

Но это, похоже, не работает, не влияет на атрибут действия.

если мы не используем главную страницу, это можно легко сделать с помощью

this.Form.Action = "option1.aspx";
ClientScript.RegisterStartupScript(this.GetType(),"test1",
    "document.form[0].submit();",true);

К сожалению, мы не можем удалить главную страницу ... любые указания на то, как этого можно достичь ..?

Ответы [ 2 ]

4 голосов
/ 10 марта 2009

Это то, что я прочитал, они хотели бы, чтобы они не сделали. Тег Form получает свой атрибут действия жестко закодированным. Вы должны использовать управляющий адаптер, чтобы контролировать его конструкцию во время выполнения. Я использую его специально для перезаписи URL, когда я требую, чтобы URL обратной передачи был перезаписанным, который я создал. Скотт Гу сделал код для него, и вы можете найти его здесь:

http://www.scottgu.com/blogposts/urlrewrite/UrlRewrite_HttpModule1.zip

И адрес для статьи:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

0 голосов
/ 11 марта 2009

Нужно ли форме передавать значения на итоговую страницу? Если нет, то почему бы вам просто не использовать Response.Redirect на нужную страницу? Например, предполагая, что вы используете RadioButtonList с именем lstOptions :

protected void btnSubmit_Click(object sender, EventArgs ags) {
        switch (lstOptions.SelectedValue) {
            case "option1":
                Response.Redirect("~/option1.apsx");
                break;
            //etc
        }
}

Если вы должны передать значения, почему вы вообще запускаете сообщение? Похоже, вы могли бы достичь того, что вы хотите, просто используя JavaScript. Например, предположим, что ваша форма имеет имя form1 , а ваши радиокнопки имеют имя options :

<input type="submit" value="Submit" onclick="javascript:submitForm()" />

<script type="text/javascript">
   function submitForm() {
      for (var i=0; i < document.form1.options.length; i++) {
         if (document.form1.options[i].checked) {
            document.forms[0].action = "option" + i + ".aspx";
            document.forms[0].submit();
         }
      }
   }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...