2010-04-13 3 views
2

모델 개체를 쿼리 문자열로 serialize 할 수 있습니까? 이것이 가능한지 전혀 알 수는 없지만 그렇지 않은 경우 어떻게해야할까요?모델을 쿼리 문자열로 serialize

<% Html.RenderAction("Grid", "Grid", new { gridModel= ViewData["model"]}); %> 

모델은 캘리포니아 20 개 특성을 포함하고, 그것을 작동하는 고통을 만들 것 개별적으로 그들과 함께 쿼리 문자열을 생성하고 정말 예쁘게 것입니다. 그래서 내가 가지고있는 대안은 무엇입니까?

+1

항상 json으로 직렬화 한 다음 작업에서 역 직렬화 할 수 있습니다. 그러나 액션에 식별자 만 보내면 액션의 모든 데이터를 가져올 수 있습니다. 또는 Html.RenderPartial()을 대신 사용하십시오. 이러한 종류의 렌더링 헬퍼의 목적을 무력화하고 mvc 패턴에 반대하는 방식으로 작동합니다. –

답변

0

. 내가 원했던 것만 큼 아름답고 멋지지 않았다. 그러나 내가 할 수있는 유일한 좋은 길을 이해하는 한.

0

직접 대답하려면 JSON.NET과 같은 것을 ASCII로 직렬화 한 다음 base64로 인코딩하면됩니다.

그러나 쿼리 문자열에 포함 할 수있는 데이터의 양에 대한 실제 제한이 있으며이를 망설이는 경우가 있습니다.

제가 생각할 수있는 가장 가까운 것은 GUID를 만들고 세션에 객체를 저장하는 키로 그 GUID를 사용하고 RenderAction을 GUID로 전달하는 것입니다. 이 작업을 수행하면 개체가 세션에서 제거 된 다음 세션에서 제거됩니다. 그런 다음 다른 쪽

var _requestKey = Guid.NewGuid(); 
Session[requestKey] = gridModel; 

(심지어 훨씬 적은 작업을 컴파일 보장)

빠른 의사 :이를위한 양식을 사용하여 종료

var gridModel = Session[requestKey] as GridModelType; 
Session[requestKey] = null; 
+0

차가움. 나는 네가하는 말을 보았다. 결국 모델을 직렬화하지 않고 수동으로 필요한 매개 변수를 입력했습니다. 예쁜 것은 아니지만 잘 작동합니다. 대답 해줘서 고마워요. – MrW