Jag har ett problem, jag måste kunna ställa in var ett runat="server" form postar sin action.. Detta för att jag kör med statiska fejkade sökvägar (Context.RewritePath) Om du inte anger någon alls, kommer posten då inte till den nuvarande sidan? Jag hade samma problem för ett tag sen och hittade följande kod: "Om du inte anger någon alls, kommer posten då inte till den nuvarande sidan?" Tänkte jag knasigt nu? Trodde att webbläsaren tog URLen den "gick in på" och skickade posten till den om inget annat angetts? Borde väl inte spela någon roll om det är en fejkad adress då, tänkte jag =) Hm.. Det där låter mystiskt. Jag kör på det viset (dvs. "fejkade statiska adresser") med bara någon rewrite-historia, fungerar finemang..? för mig blev det så att action taggen fick den adress som rewriten gjorde (allså den som man inte vill visa för klienten) Ändra action attribute för en runat="server" form
Sv: Ändra action attribute för en runat="server" form
Sv: Ändra action attribute för en runat="server" form
using System;
using System.Web.UI;
namespace FormActionFixer
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class FormActionFixerHtmlTextWriter : HtmlTextWriter
{
private string actionUrl;
public FormActionFixerHtmlTextWriter(HtmlTextWriter writer) : base(writer)
{
}
public FormActionFixerHtmlTextWriter(HtmlTextWriter writer, string tabString) : base(writer, tabString)
{
}
public string ActionUrl
{
get { return actionUrl; }
set { actionUrl = value; }
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (value != null && String.Compare(name, "action", true) == 0)
value = ActionUrl;
HtmlTextWriter writer = (HtmlTextWriter)InnerWriter;
writer.WriteAttribute(name, value, fEncode);
}
}
}
Eftersom mitt projekt var gjort i VB kompilerade jag ovanstående och refererade till assemblyn.
Nästa steg är att overrida sidans Render-metod:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Dim sPageBaseUrl As String = "VirtualUrl"
Dim FormActionFixerWriter As FormActionFixer.FormActionFixerHtmlTextWriter
FormActionFixerWriter = New FormActionFixer.FormActionFixerHtmlTextWriter(writer)
FormActionFixerWriter.ActionUrl = sPageBaseUrl
MyBase.Render(FormActionFixerWriter)
End SubSv:Ändra action attribute för en runat="server" form
Jo fast jag kör med fejkade statisak adresser så den ska inte gå till den sidan som asp tror..
Tack fredrik, ska kolla in din kod imorn på jobbet.. Mvh AndersSv: Ändra action attribute för en runat="server" form
Sv: Ändra action attribute för en runat="server" form
Sv:Ändra action attribute för en runat="server" form
Men genom att låta form renderingen gå via min egen HtmlWriter (tack för tipset ovan) så fungerar det nu fint!