如何动态更改母版页上的aspnetForm的Action属性

时间:2009-03-10 09:53:31

标签: c# asp.net javascript

我们正在尝试动态修改母版页中主ASP.NET表单的Action属性。

该页面有一个单选按钮,用户选择其中一个选项并点击提交,在回发时,根据选择应该设置表单的操作属性,并且应该自动再次提交表单。

我们试图使用JavaScript。

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

但这似乎不起作用,对action属性没有影响。

如果我们不使用母版页,可以使用

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

可悲的是,我们无法移除母版页..关于如何实现这一点的任何指示......?

2 个答案:

答案 0 :(得分:4)

这是我读过的,他们希望他们没有做过。 Form标记将其action属性硬编码。您必须使用控制适配器才能在运行时控制其构造。我特别为URL重写使用它,当我要求回发URL是我创建的重写URL。 Scott Gu为它制作了代码,你可以在这里找到它:

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

答案 1 :(得分:0)

表单是否需要将值传递给结果页面?如果没有,为什么不直接使用Response.Redirect到正确的页面?例如,假设您正在使用名为 lstOptions 的RadioButtonList:

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>