2013-06-26 27 views
16

Công việc ràng buộc mô hình có thông qua chuỗi truy vấn không?Công việc ràng buộc mô hình có thông qua chuỗi truy vấn trong asp.net mvc

Nếu tôi có một yêu cầu get như:

GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1 

có phương pháp sau đây trong CountryController có lập luận oCountry nó chứa Id và Tên thuộc tính với giá trị từ chuỗi truy vấn?

public ViewResult CheckCountryName(Country oCountry) 
{ 
    //some code 
    return View(oCountry); 
} 

Vì một lý do nào đó, tôi nhận Id là 0 và Tên là null trong đối tượng oCountry. Cái gì còn thiếu?

+0

Có nhưng đối với các loại nguyên thủy như chuỗi và int. Không phải cho trường hợp của bạn Nhưng chuỗi truy vấn là xấu xí –

+0

làm thế nào tôi nên sửa đổi phương pháp của tôi để làm cho nó hoạt động (nhận được các giá trị từ chuỗi truy vấn)? – Brij

+2

@DanHunex Tôi cũng nghĩ rằng các tham số truy vấn là xấu xí, nhưng bạn sẽ thực hiện thao tác GET http khác như thế nào nếu không có nó? – hofnarwillie

Trả lời

22

Có, mô hình ràng buộc hỗ trợ ràng buộc từ chuỗi truy vấn. Tuy nhiên, các quy tắc ràng buộc mô hình tương tự cũng áp dụng ở đây: các tên/biểu thức thuộc tính phải khớp với yêu cầu của bạn và trong mô hình của bạn.

Vì vậy, nếu bạn có tài sản Name thì bạn cần có khóa Name trong chuỗi truy vấn. Nếu bạn viết Country.Name mô hình ràng buộc cái nhìn đầu tiên cho một thuộc tính được gọi là Country và sau đó là thuộc tính Name trên đối tượng quốc gia đó.

Vì vậy, bạn không cần Country tiền tố cho bạn tên thuộc tính, vì vậy yêu cầu của bạn sẽ trông như thế này:

/Country/CheckName?Name=abc&Id=1 HTTP/1.1 

Hoặc nếu bạn không thể thay đổi theo yêu cầu, bạn có thể xác định tiền tố cho tham số hành động của bạn với số BindAttribute:

public ViewResult CheckCountryName([Bind(Prefix="Country")]Country oCountry) 
{ 
    //some code 
    return View(oCountry); 
} 
+0

Thuộc tính là tuyệt vời, loại khả năng mà họ cung cấp là ra khỏi hộp. Cảm ơn @nemesv http://msdn.microsoft.com/en-us/library/system.web.mvc.bindattribute%28v=vs.108%29.aspx – Brij

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