2014-11-28 1 views
0

asp.net에서 다음 쿼리 문자열의 [search] 및 sort [Driver1] 매개 변수를 처리하는 가장 좋은 방법은 무엇입니까?asp.net에서 [querystring coontaining] 처리

?queries[search]=greenock&id=20&sorts[Driver1]=1 

나는이 모델을 사용하여 시도하지만 ID는 바인드 :

public class ICRSRequestModel 
{ 
    public int ID { get; set; } 
    public ICollection<string> Sorts { get; set; } 
    public ICollection<string> Queries { get; set; } 
} 

내가 불행하게도 요청하는 응용 프로그램을 변경할 수있는 옵션을 가지고 있지 않으며, 문자열 []는 알 수없는 수 안에 포함 값.

+0

아마도 도움이 될 것입니다. http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx – Guffa

답변

1

재산은

public ICollection<string> Queries { get; set; } 

그런 다음 쿼리 문자열이

?queries[0]=greenock 

당신이 그래서

public Dictionary<string, string> Queries { get; set; } 

에 속성을 변경해야 할 필요가있는 경우 검색어 문자열은

?queries[search]=greenock 

의 핵심은 수 "검색"하고 값은 "그리 녹"이것은 단지 하나의 queries 값을 작동

참고가 될 것입니다. ?queries[search]=greenock?queries[anotherKey]=anotherValue이 작동하지 않습니다.

+0

감사합니다. –

0

.. 50 담당자 포인트 또 다른있어 나는이 아마 쓸모없는 코멘트와 함께 댓글을 달았습니다, 그러나 여기가는 것 아니, 죄송합니다

내가 MVC 바인딩을 사용하여 더 나은 방법이있을거야하지만, 다른 모두가 실패 할 경우가 수도 Server.Request 개체에서 QueryString을 가져 와서 원하는 정보를 추출하기 위해 문자열을 분할 할 가치가 있습니다. 프로젝트에서 거짓말 한 코드를 사용하여 keyvaluepair 컬렉션으로 가져올 수 있습니다. 필요에 맞게 조작 할 수 있습니다.

Dictionary<string, string> dictionary = new Dictionary<string, string>(); 
foreach (string part in queryString.Split(new char[] { '&' })) 
{ 
    if (!string.IsNullOrEmpty(part)) 
    { 
     string[] strArray = part.Split(new char[] { '=' }); 
     if (strArray.Length == 2) 
     { 
      dictionary[strArray[0]] = strArray[1]; 
     } 
     else 
     { 
      dictionary[part] = null; 
     } 
    } 
}