創建一個過濾器(繼承自Stream
的類),將其分配給您的HttpContext.Response.Filter
屬性,並在其中覆蓋Write
方法,從生成的html中刪除所有名稱標籤:)
瞭解更多信息http://msdn.microsoft.com/en-us/library/system.web.httpresponse.filter.aspx
更新
看到這個頁面看一下源代碼爲TextBox
它表明名稱實際上是添加到Attributes
-list在呈現過程中,所以應該可能會干擾TextBox
類的呈現並阻止添加此屬性。這應該做
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);
}
}
更新一次
我怎能忘記!你甚至不需要繼承你的文本框。在asp.net你可以定義你想每個控制使用哪種類型的HtmlTextWriter,所以你可以配置每一個TextBox控件應該這樣
<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);
}
}
我不認爲你可以,它的名字就像當你在一個contenct的佔位符中輸入它時,如果你想純HTML使用ASP.net MVC – 2010-12-12 22:36:09
或1.不要使用服務器控件2.創建你自己的過濾器清理html – 2010-12-12 22:38:03
你確定你不需要'name'嗎?該值不會在POST後發送回服務器?如果情況並非如此...爲什麼不用JavaScript代替? – 2010-12-12 22:38:23