créer un filtre (classe qui hérite de Stream
), attribuez à votre attribut HttpContext.Response.Filter
, et il vous écraserait la méthode Write
, pour supprimer tous les porte-noms du code HTML généré par :)
Voir cette page pour plus d'informations http://msdn.microsoft.com/en-us/library/system.web.httpresponse.filter.aspx
Mise à jour
regardant le code source pour TextBox
il révèle que nom est ajouté à la Attributes
-list pendant le rendu, il devrait donc être possible d'interférer avec le rendu de la classe TextBox
et d'empêcher cet attribut d'être ajouté. Cela devrait faire
public class NoNamesTextBox : TextBox
{
private class NoNamesHtmlTextWriter : HtmlTextWriter
{
public NoNamesHtmlTextWriter(TextWriter writer) : base(writer) {}
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name.Equals("name", StringComparison.OrdinalIgnoreCase)) return;
base.WriteAttribute(name, value, fEncode);
}
}
protected override void Render(HtmlTextWriter writer)
{
var noNamesWriter = new NoNamesHtmlTextWriter(writer);
base.Render(noNamesWriter);
}
}
mise à jour une fois de plus
Comment pourrais-je oublier! Vous n'avez même pas besoin de sous-classer votre zone de texte. Dans asp.net, vous pouvez définir quel type HtmlTextWriter que vous souhaitez utiliser par le contrôle, de sorte que vous pouvez simplement configurer que chaque contrôle TextBox doit utiliser une instance de votre propre NoNamesHtmlTextWriter comme celui-ci
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter
controlType="System.Web.UI.WebControls.TextBox"
adapterType="NoNamesTextBoxAdapter"
/>
</controlAdapters>
</browser>
</browsers>
public class NoNamesTextBoxAdapter : ControlAdapter
{
private class NoNamesHtmlTextWriter : HtmlTextWriter
{
public NoNamesHtmlTextWriter(TextWriter writer) : base(writer) { }
public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name.Equals("name", StringComparison.OrdinalIgnoreCase)) return;
base.WriteAttribute(name, value, fEncode);
}
}
protected override void Render(HtmlTextWriter writer)
{
var noNamesRender = new HtmlTextWriter(writer);
base.Render(noNamesRender);
}
}
Je ne pense pas que vous pouvez, ses noms comme ça lorsque vous entrez dans un titulaire de place, si vous voulez utiliser HTML pur ASP.net MVC –
ou 1. n'utilisez pas les contrôles serveur 2. créer vos propres filtres à nettoyez le html –
Etes-vous sûr de ne pas avoir besoin de 'name'? La valeur n'est pas renvoyée au serveur sur POST? Si ce n'est pas le cas ... pourquoi ne pas rendre une variable JavaScript à la place? –