2015-06-23 15 views
17

Tôi đang cố truy cập các tham số chuỗi truy vấn trong các ứng dụng ASP.NET MVC6 của mình. Nhưng có vẻ như không giống như MVC5 và web hình thức, QueryString không có bất kỳ indexer và tôi không thể nói điều gì đó như:Truy cập chuỗi truy vấn trong ASP.NET MVC6

string s = Request.QueryString["key1"] //gives error 

Vì vậy, câu hỏi của tôi là - làm thế nào để truy cập vào các thông số chuỗi truy vấn trong MVC6?

Đáng ngạc nhiên Request.Forms bộ sưu tập hoạt động như mong đợi (như trong MVC5 hoặc biểu mẫu web).

Cảm ơn bạn.

+0

bạn có lỗi gì? –

+0

Bạn không được phép sử dụng QueryString hoặc Form trong MVC, thay vào đó bạn nên có tham số trong bộ điều khiển sẽ tự động liên kết với các giá trị. –

Trả lời

28

Bắt truy vấn với một indexer được hỗ trợ.

Xem MVC kiểm tra mã ở đây - https://github.com/aspnet/Mvc/blob/e0b8532735997c439e11fff68dd342d5af59f05f/test/WebSites/ControllersFromServicesClassLibrary/QueryValueService.cs

context.Request.Query["value"]; 

Cũng lưu ý rằng trong MVC 6 bạn có thể mô hình ràng buộc trực tiếp từ truy vấn bằng cách sử dụng các [FromQuery] thuộc tính.

public IActionResult ActionMethod([FromQuery]string key1) 
{ 
    ... 
} 
+0

'[FromQuery]' là những gì tôi đã thiếu – gldraphael

+0

Đây thực sự là một khoảnh khắc học tập. Tôi thậm chí không biết [FromQuery] đã tồn tại. Nó dường như không được tài liệu tốt. Ngoài ra còn có một [FromHeader] và [FromForm] trong số những người khác. Bạn thậm chí có thể viết các chất kết dính tùy chỉnh. –

17

Vì vậy, câu hỏi của tôi là - làm cách nào để truy cập thông số chuỗi truy vấn trong MVC6?

Bạn có thể sử dụng Request.Query đó là bổ sung mới trong ASPNET 5.

var queryStrings = Request.Query; 

URL Tôi sẽ cố gắng là - http://localhost:12048/Home/Index?p=123&q=456 Và bạn có thể nhận được tất cả các phím sử dụng -

queryStrings.Keys 

enter image description here

Và sau đó bạn có thể nhận được các giá trị của iterat ing phím -

var qsList = new List<string>(); 
foreach(var key in queryStrings.Keys) 
{ 
     qsList.Add(queryStrings[key]); 
} 

enter image description here

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