2009-11-27 48 views
13

Tôi đang sử dụng ASP.NET 3.5 và C#.Làm hộp văn bản bị ẩn trong ASP.NET

Trên trang của tôi, tôi cần có một hộp văn bản không được hiển thị cho người dùng nhưng nó PHẢI ở đó khi bạn xem Nguồn trang, lý do là, một chương trình khác có tên Eloqua sẽ xem xét nguồn trang và nó phải nhận được giá trị của hộp văn bản đó.

Giá trị của hộp văn bản đó sẽ được điền dựa trên những gì người dùng chọn.

Vì vậy, tôi không thể đặt thuộc tính hộp văn bản thành Hiển thị = False vì nó sẽ không nằm trong HTML nguồn và tôi không thể đặt Enabled = False vì tôi không muốn người dùng thấy hộp văn bản.

Có một số thuộc tính tôi có thể sử dụng để đặt hộp văn bản này bị ẩn cho người dùng nhưng vẫn hiển thị trong nguồn trang không?

My ASP.NET hộp văn bản

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

Trả lời

21

Bạn có thể sử dụng một trường ẩn.

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

Sử dụng nó giống như hộp văn bản.

+3

Trường ẩn không hoạt động với trình xác thực ASP.net. – Nuzzolilo

0

Tại sao không sử dụng một lĩnh vực ẩn:

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

Bởi vì tôi đang sử dụng ASP.NET, tôi không thể chỉ định một trường kiểu – Etienne

9

Hãy thử này để textbox vô hình thay vì phía máy chủ tài sản nhìn thấy:

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

ẩn không thể nhận/đặt văn bản trong codebutt; Vì vậy, đây là cách để đi – maxweber

+0

@ maxweber - Tôi sắp chết để biết, "codebutt" là gì? – Matt

+0

và một từ khác cho mông là .... –

8

suy nghĩ đầu tiên: Bạn có thể sử dụng một lĩnh vực ẩn? Điều này sẽ phù hợp hơn nhiều (< asp: hiddenfield ID = "blah" runat = "Máy chủ"/> nếu bạn muốn điều khiển .NET).

Nếu ứng dụng sẽ không thực hiện điều đó mặc dù bạn thực sự có thể chỉ cần đặt "style = 'display: none;'" trong phần đầu mã của trang. Intellisense sẽ không thích nó, nhưng nó sẽ hiển thị tốt (EG: < asp: TextBox id = "txtField" style = "display: none;" runat = "server"/>)

Cũng từ codebehind bạn có thể làm txtField.Attributes.Add ("style", "display: none");

Hoặc bạn cũng có thể chỉ cho nó một CssClass "ẩn" mà trong CSS của bạn được định nghĩa là ".hidden {display: none;}"

Lớp CSS hoặc chỉ sử dụng một lĩnh vực tiềm ẩn sẽ là khuyến nghị của tôi .

2

Nếu nó phải là một textbox vì lý do gì chỉ giấu nó với css:

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

giải quyết vấn đề của tôi, vì lý do nào đó, văn bản từ trường ẩn không được lấy ra. vì vậy tôi cần phải ẩn hộp văn bản. – AdorableVB

2

CSS:

.hidden-div 
{ 
    display: none; 
} 

HTML:

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

Nó sẽ làm cho đầu vào của bạn bị ẩn, nhưng nó ' s sẽ được hiển thị trong mã nguồn.

EDIT: Xin lỗi, tôi đã đọc sai. Tôi nghĩ bạn muốn giấu một đầu vào. Nhưng nó không quan trọng anyway, chỉ cần thay thế đầu vào với cơ bản bất cứ điều gì.

+3

display: none có lẽ là nhiều hơn những gì bạn muốn. Hiển thị ẩn sẽ để lại một khoảng cách ở giữa hình thức của mình. – fyjham

+1

Sai lầm ngu ngốc, xin lỗi. Đã chỉnh sửa :) –

0

Làm thế nào về việc sử dụng CSS để ẩn một div chứa hộp văn bản:

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

Sau đó, trong trang của bạn:

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

Hope this helps.

+1

Điều này bỏ lỡ khái niệm "ẩn" và cho phép bất kỳ trình đọc mã nào nghĩ rằng có lỗi. – Marcel

1

Bằng cách đặt Visible = "false" ở phía máy chủ sẽ không hiển thị điều khiển. Bạn nên sử dụng asp:Hidden hoặc INPUT type="hidden". Tùy chọn khác đang sử dụng CSS, bằng cách đặt display:none.

Các vấn đề liên quan