2010-12-30 55 views
6

Làm thế nào tôi có thể nhận đúng các mảng đầu vào này trên asp.net?Xử lý các mảng của các phần tử đầu vào HTML với Request.Form Giống như PHP

<input type=hidden name='field[name][]' value='alex' /> 
<input type=hidden name='field[name][]' value='mark' /> 
<input type=hidden name='field[name][]' value='helen' /> 

<input type=hidden name='field[age][]' value='22' /> 
<input type=hidden name='field[age][]' value='30' /> 
<input type=hidden name='field[age][]' value='29' /> 

Trong php bạn có thể truy cập vào lĩnh vực bởi $field = $_POST["field"]

$field["name"]$field["age"] chỉ đơn giản là mảng chứa tên và lứa tuổi.

Trả lời

4

Bạn có thể sử dụng phân tách chuỗi tiêu chuẩn - đây là tất cả những gì php làm cho bạn đằng sau hậu trường. PHP không phải là một ngôn ngữ đánh máy mạnh mẽ tuy nhiên có nghĩa là nó là một LOT dễ dàng hơn cho họ để cung cấp "sự xuất hiện" của chức năng này.

Thực tế là php chỉ cho phép bạn cung cấp dấu phẩy phân cách bằng dấu phẩy và nó sẽ tự động chia nhỏ nó cho bạn. Vì vậy, nếu bạn muốn làm điều này trong asp.net, bạn có thể sử dụng cùng một tên đầu vào một số lần và nó sẽ được trả về với đối tượng yêu cầu như là một danh sách phân tách bằng dấu phẩy. Tôi sẽ không khuyên bạn nên sử dụng phương pháp này cho người dùng nhập vào, nhưng nó sẽ làm việc tốt nếu bạn đang contrrolling đầu vào như kết hợp một danh sách vào một đầu vào ẩn từ một kịch bản jquery.

Để bắt đầu với những gì đang xảy ra (với php quá .. tất cả các công nghệ web dev đang sử dụng cùng một quy tắc http), chỉ cần thử đăng biểu mẫu với đầu vào (không đặt máy chủ runat) có hai lần .

<input type="text" name="MyTest" value="MyVal1" /> 
<input type="text" name="MyTest" value="MyVal2" /> 

On pageload thêm này

if(IsPostBack) 
{ 
    Response.Write(Request["MyTest"]); 
} 

Bạn sẽ thấy

MyVal1, MyVal2

Trên màn hình.

Bây giờ, nếu bạn muốn điều này vào một mảng, bạn có thể:

string[] myvals = Request["MyTest"].Split(','); 

nếu bạn muốn số nguyên hoặc kiểu dữ liệu khác (php không biết/quan tâm những gì một kiểu dữ liệu thực sự là), bạn sẽ phải lặp qua nó và phân tích nó thành một danh sách mảng/chung khác.

Tôi không biết mong muốn của bạn là kết quả cuối cùng, nhưng hiểu được những gì trình duyệt đăng lại là bước đầu tiên và câu trả lời ngắn là ...

Có, ASP.NET có thể thực hiện việc này (chỉ cần thêm một chút theo cách thủ công).

0

Đây là không mảng đầu vào. HTML không có khái niệm về mảng.

Đây chỉ là các nhóm đầu vào có cùng tên.

Bạn đang cố gắng đạt được điều gì? Tại sao bạn không sử dụng các điều khiển phía máy chủ?


Cập nhật:

Bạn có thể truy cập vào bộ sưu tập Request.Forms - nó sẽ tổ chức các yếu tố hình thức đăng.

Hoặc, sử dụng các điều khiển phía máy chủ - bạn sẽ có thể truy cập các ID này bằng ID.

+0

Hmm tôi có thể nhìn thấy bây giờ. Tôi đã thay đổi chủ đề của câu hỏi. Vì vậy, PHP giải thích các đầu vào theo cách cung cấp cho bạn một mảng để làm việc. Vì vậy, asp.net có một cái gì đó như thế hoặc tôi cần phải viết thông dịch viên của riêng tôi? Về kiểm soát phía máy chủ .. nó phức tạp hơn vì tôi đang phát triển các điều khiển máy chủ của riêng tôi. – EBAG

27

thực sự, nó tồn tại với asp.net. - bạn có thể sử dụng

string[] MyTest = Request.Form.GetValues("MyTest"); 

hoặc

string[] MyTest = Request.QueryString.GetValues("MyTest"); 
+0

Đây là cách phù hợp, ASP.NET sẽ thực hiện phân chia cho mỗi đầu vào được đăng. Sử dụng hàm String.Split (',') sẽ bị sai nếu ai đó đặt một chuỗi có dấu phẩy bên trong (như địa chỉ 'New York Plaza, New York, NY 10004'). –

+1

Không thể tin rằng tôi không biết điều này, tôi học một cái gì đó mới mỗi ngày! –

+0

Dường như đây là câu trả lời được chấp nhận. – crush

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