如何动态更改MasterPage上aspnetForm的Action属性

我们正在尝试动态修改母版页中主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); 

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

这是我读过的,他们希望他们没有做过。 Form标记获取其操作属性的硬编码。 您必须使用控制适配器才能在运行时控制其构造。 我特别为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

表单是否需要将值传递给结果页面? 如果没有,为什么不直接使用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,而您的单选按钮具有选项名称: