2009-11-27 14 views
13

Ich benutze ASP.NET 3.5 und C#.Making Textfeld in ASP.NET versteckt

Auf meiner Seite muss ich ein Textfeld haben, das für den Benutzer nicht sichtbar sein muss, aber es muss da sein, wenn Sie die Seitenquelle betrachten, Grund ist, ein anderes Programm namens Eloqua wird auf die Seitenquelle und suchen es muss den Wert dieses Textfelds erhalten.

Der Wert dieses Textfelds wird basierend auf den vom Benutzer ausgewählten Werten ausgefüllt.

So kann ich die Textbox-Eigenschaft nicht auf Visible = False setzen, da es dann nicht in der Quell-HTML und ich kann nicht festgelegt werden Enabled = False, weil ich nicht möchte, dass der Benutzer das Textfeld sehen.

Gibt es eine Eigenschaft, die ich verwenden kann, um dieses Textfeld für den Benutzer ausgeblendet, aber immer noch in der Seitenquelle sichtbar zu machen?

Meine ASP.NET Textbox

<asp:TextBox ID="txtTester" runat="server"></asp:TextBox> 

Antwort

21

Sie können ein verstecktes Feld verwenden.

<asp:HiddenField id="myHiddenInput" runat="server" /> 

Verwenden Sie es wie ein Textfeld.

+3

Hidden Felder nicht mit ASP.net Validatoren arbeiten. – Nuzzolilo

0

Warum nicht ein verstecktes Feld verwenden:

<input type="hidden" name="blah" /> 
+0

Weil ich ASP.NET benutze, kann ich keinen Typ angeben – Etienne

9

Versuchen Sie stattdessen von Server-Seite Visible-Eigenschaft auf unsichtbare Textbox:

myTextBox.Style.Add("visibility", "hidden"); 
// or : 
myTextBox.Style.Add("display", "none"); 
+0

verstecktes Feld konnte Text nicht in Codebutt erhalten/setzen; Also, das war der Weg zu gehen – maxweber

+0

@maxweber - Ich möchte unbedingt wissen, was ist "Codebutt"? – Matt

+0

und ein anderes Wort für Hintern ist .... –

8

Ersten Gedanke: Können Sie ein verstecktes Feld verwenden? Dies wäre viel geeigneter (< asp: hiddenfield ID = "blah" runat = "Server"/> wenn Sie ein .NET-Steuerelement wollen).

Wenn die App das nicht übernimmt, können Sie einfach "style = 'display: none;'" im Code-Front der Seite setzen. Intellisense mag es nicht, aber es wird ganz gut machen (Beispiel: < asp: TextBox id = "txtField" style = "display: none;" runat = "server"/>)

Auch von dem Code-Behind Sie können txtField.Attributes.Add ("style", "display: none");

Oder man könnte auch gibt ihm nur eine CssClass „versteckt“, die in Ihrem CSS definiert als „.hidden {display: none;}“

Die CSS-Klasse oder ein verstecktes Feld mit würde meine Empfehlungen sein .

2

Wenn es eine Textbox für welchen Gründen auch immer sein muss, verstecken es nur mit CSS:

<input type="text" name="blah" style="display:none" /> 
+0

das löste mein Problem, denn aus irgendeinem Grund wird der Text aus dem versteckten Feld nicht abgerufen. also muss ich die Textbox verstecken. – AdorableVB

2

CSS:

.hidden-div 
{ 
    display: none; 
} 

HTML:

<div class="hidden-div"> 
    <input ... /> 
</div> 

Es wird weil deine Eingabe verborgen ist, aber Ich werde im Quellcode sichtbar sein.

EDIT: Sorry, ich habe es falsch gelesen. Ich dachte du wolltest einen Input verstecken. Aber egal, ersetzen Sie einfach die Eingabe mit praktisch allem.

+3

Anzeige: Keine ist wahrscheinlich mehr, was Sie wollen. Die versteckte Sicht würde eine Lücke in der Mitte seiner Form hinterlassen. – fyjham

+1

Dummer Fehler, sorry. Bearbeitet :) –

0

Wie wäre es mit CSS ein div mit dem Textfeld zu verbergen:

.hidden { 
    position: absolute; 
    left: -9999px; 
} 

dann in Ihre Seite ein:

<div class="hidden"> 
    <asp:TextBox ID="TextBox1" runat="server" Text="hi"></asp:TextBox> 
</div> 

Hoffnung, das hilft.

+1

Dies vermisst das Konzept von "versteckt" und lässt jeden Code-Leser denken, dass es einen Fehler gibt. – Marcel

1

Durch Einstellung Visible = "false" in Server-Seite wird das Steuerelement nicht gerendert. Sie sollten entweder asp:Hidden oder INPUT type="hidden" verwenden. Andere Option verwendet CSS, indem display:none.

Verwandte Themen