Create an sub-class of the HtmlForm class, and either remove the "action" attribute, or give it your own value 
Sample...
PHP Code:
using System;
namespace CG
{
/// <summary>
/// Removes the "Action" attribute, or replaces it with the value provided by the <see cref="ActionUrl"/> property.
/// </summary>
public sealed class HtmlActionlessForm: System.Web.UI.HtmlControls.HtmlForm
{
private string _actionUrl = string.Empty;
private const string ATTRIBUTE_NAME = "name";
private const string ATTRIBUTE_METHOD = "method";
private const string ATTRIBUTE_ACTION = "action";
private const string ATTRIBUTE_ID = "id";
/// <summary>
/// Gets or sets the URL to replace the original action value with.
/// </summary>
public string ActionUrl
{
get
{
return _actionUrl;
}
set
{
if (value == null)
throw new ArgumentNullException("ActionUrl");
_actionUrl = value;
}
}
/// <summary>
/// Initialises a new instance of the <see cref="HtmlActionlessForm"/> class.
/// </summary>
public HtmlActionlessForm(): base()
{
}
/// <summary>
/// Used to remove or modify the "action" attribute of the form tag based on the <see cref="ActionUrl"/> property.
/// </summary>
/// <param name="writer"></param>
protected override void RenderAttributes(System.Web.UI.HtmlTextWriter writer)
{
base.Attributes.Remove(ATTRIBUTE_NAME);
base.Attributes.Remove(ATTRIBUTE_METHOD);
base.Attributes.Remove(ATTRIBUTE_ACTION);
writer.WriteAttribute(ATTRIBUTE_NAME, this.Name);
writer.WriteAttribute(ATTRIBUTE_METHOD, this.Method);
this.Attributes.Render(writer);
if (this.ActionUrl.Length > 0)
writer.WriteAttribute(ATTRIBUTE_ACTION, this.ActionUrl);
if (base.ID != null)
writer.WriteAttribute(ATTRIBUTE_ID, base.ClientID);
}
}
}
And in your aspx...
PHP Code:
<!-- Add the directive... -->
<%@ Register TagPrefix="fm" Namespace="CG" Assembly="CG" %>
<!-- other content here... -->
<fm:HtmlActionlessForm id="Form1" method="post" runat="server" ActionUrl="myotherformtarget.aspx">
</fm:HtmlActionlessForm>