我们已经要求客户将要在其自己的域上运行的网站移动到另一个应用的子文件夹。
我使用ISAPI重写代理实现了这一点。
但是,有一种表单可以在网站上发回帖子。生成的ASP.NET动作的URL是“/ sign-up.aspx?”。这会将回发发送到站点的根目录。
我想将此更改为“sign-up.aspx?”(无前导斜杠)。如果我没有使用母版页,这样就可以了,因为我可以获得对表单的引用并更改它的操作(这是.NET 3.5 SP1)。我试图在我的控件中使用以下代码来获取对表单的引用,但它似乎没有做任何事情。它找到了表单,但操作未设置为值。
HtmlForm form = ControlLocator.FindControl<HtmlForm>(Page.Master.Master, "form1");
form.Action = "sign-up.aspx?";
这是在Page_Load和ControlLocator.FindControl是这个http://www.west-wind.com/Weblog/posts/5127.aspx的端口
有什么想法吗?
干杯, 罗布
答案 0 :(得分:4)
很好解决您的问题。 但对于想要更改aspnetform的操作URL的人,请在Page_Load事件中使用这个简单的代码(即使他们有一个母版页)。
protected void Page_Load(object sender, EventArgs e)
{
this.Form.Action = "URL Goes Here";
}
答案 1 :(得分:1)
你试过在page_prerender中做过吗?
可能是所有主内容合并尚未在page_load中完成。假设HtmlForm是正确的类型,并且表单实际上被称为'form1' - 我确信它是正确的。
答案 2 :(得分:1)
如果您在注册表单上有一个按钮,则可以使用它的postBackUrl
属性将回发重定向到其他网址。
<asp:button id="SignUpBtn"
runat="server"
postbackurl="sign-up.aspx"
value="Sign Up" />
您可以在"Cross-page Posting in ASP.NET Web Pages"下找到更多相关信息。
答案 3 :(得分:0)
最终发现umbraco的Form.browser在我更改后重写了帖子后面的url。 (抱歉在我原来的问题中没有提到使用umbraco)。