2009-04-27 4 views
3

나는 URL이에 양식 입력 :ASP.NET MVC : 꽤 URL을

선적/검색/{searchType이를}/{searchValue}

및 컨트롤러 액션 : 그래서

// ShipmentSearchType is an enum ... PartNumber, CustomerOrder, etc... 
ActionResult Search(ShipmentSearchType searchType, string searchValue) 

이것은 내가 좋아하는 꽤 URL을 입력 할 수 있습니다 의미 :

선적/검색/PARTNUMBER/위젯-01

및 Ge t 해당 부품 번호의 모든 발송물 목록.

이제 응용 프로그램의 바쁜 작업을하고 있고 부품 번호를 묻는 검색 양식을 만들 때 검색에 다시 게시됩니다. 그래서 기본적으로 내가 원하는 :

선적/검색/PARTNUMBER는/{사용자 입력 -에서 - 텍스트 상자} 불행하게도

I 양식은 위의 URL에 도달 할 수 없습니다 - 그것은 서버 측 생성되어야한다 . 대신 {post-request} 값을 {user-input}으로 사용하여 Shipment/Search/PartNumber에 양식을 다시 보내야합니다.

[AcceptVerbs(HttpVerbs.Post)] 
ActionResult Search(ShipmentSearchType searchType, string searchValue, bool? post) 
{ 
    return RedirectToAction("Search", new { searchType = searchType, searchValue = searchValue}); 
} 

2 일 :

그래서 나는 끝낼

1) 내가 클라이언트 측에서 자바 스크립트를 사용하지 않고 검색의 포스트 방법을 가지고 주위를 얻을 수있는 방법이 있나요?

2) bool? 게시 된 값이 있으므로 서명이 다릅니다. 그것은 분명히 추한 것입니다. 이것을하는 더 똑똑한 방법이 있습니까?

감사합니다.

편집 :

"불행하게도 내가 할 수 있다고 생각하지 않는 형태에서 (자바 스크립트없이 적어도)." & "자바 스크립트를 사용하지 않고 게시물을 가져갈 수있는 방법이 있습니까?"

다소 모호했습니다. 내가 의미하는 바는 양식이 url/Shipment/Search/PartNumber/{value-from-textbox}를 생성하여 양식 메소드에 가져올 수 있다고 생각하지 않는다는 것입니다. 이 자바 스크립트 (URL을 동적으로 작성하려면 작업 제출을 무시할) 할 간단한 것이라고 생각하지만 그 짓을하지 않았습니다. 나는 자바 스크립트가 게시물을하는 데 필요한 것을 의미하지는 않습니다. 내가 지켜 있기 때문에 좋은 해결책이라고 생각

[AcceptVerbs(HttpVerbs.Post)] 
ActionResult Search(FormCollection form) 
{ return RedirectToAction("Search", new { searchType = form["searchType"], searchValue = form["searchValue"]}); } 

:

+0

자바 스크립트 없이는 그럴 수없는 이유가 표시되지 않습니다. 왜 당신이 할 수 없다고 생각하는지 설명해 주시겠습니까? –

답변

6

내가 같은 상황을 가지고 있지만, 자바 스크립트없이 잘 작동, 난 그냥 [포스트]에서 FormCollections을 받게 검색하고이 같은 조치로 리디렉션 Post-Redirect-get 패턴에 대한 비디오 - asp.net mvc 응용 프로그램에서 좋은 연습.

+0

동영상에 URL이 있습니까? –

+0

패턴 설명 : http://en.wikipedia.org/wiki/Post/Redirect/Get video는 http://videos.visitmix.com/MIX09/T44F 패턴에 관한 것이 아니라 Phil Haack이 그것에 대해 말한 것입니다. 이리. –

+0

해결책으로 생각하지 않습니다.사용자가 수행하는 작업은 양식 컬렉션을 사용하지만 정확히 동일한 작업을 수행하기 위해 메서드 서명을 난독 화하는 것입니다. ActionResult 검색 (ShipmentSearchType 검색 유형, 문자열 검색 값) 동일한 서명을 가질 수없는 가져 오기 및 게시 메소드의 경우. 제 질문 (혼란 스러웠습니다!)은 인위적으로 차별화하지 않고 동일한 서명으로 Get (게시) 및 Post (게시)를 할 수있는 방법이있는 경우였습니다. 나는 그것을 작동시킬 수있다 (그리고 그것은있다) 나는 단지 냄새 나는 것을 발견한다. – anonymous