2015-01-06 1 views
1

URL에 조건부 쿼리 문자열을 추가하는 데 문제가 있습니다.조건부 쿼리 문자열을 MVC 4의 URL에 추가하려면 어떻게해야합니까?

if the url == domain/controller/action then 
    do nothing 

if the url == domain/controller/action?referenceNumber=xxxx then 
    url = domain/controller/action?referenceNumber=xxxx&newParameter=yyyy 

나는 운이없이 OnActionExecuting을 무시하는 것을 시도했다, 나는 RouteConfig에 매우 강한 아닙니다.

아이디어가 있으십니까?

나는

protected override IAsyncResult BeginExecute(RequestContext requestContext, AsyncCallback callback, object state) 
{ 
    var path = requestContext.HttpContext.Request.RawUrl; 

    if(myCondition) 
    { 
     requestContext.HttpContext.RewritePath(string.Format("{0}&newParameter={1}", path, getNewParameter()); 
    } 

    return base.BeginExecute(requestContext, callback, state); 
} 

다음이가 HttpContext.Request.Url를 업데이트 할 것이다 시도했지만 브라우저에서 URL을 반영하지 않을 것입니다.

이 문제를 극복하는 방법은 무엇입니까? 어떤 단서?

+0

이 코드는 어디서 볼 수 있는지 더 좋은 방법이 있습니다. 컨트롤러에 있다면 MVC가 라우팅에 관한 것이기 때문에 이해가되지 않습니다. 코드가 실행되는 위치를 알려주십시오. –

+0

@JohnPeters 신속한 답변을 부탁드립니다. 컨트롤러 수준입니다. 앞서 언급했듯이 Routing에서 그렇게 강력하지는 않습니다.이 문제를 해결하는 방법을 모르겠습니다. – mahfuz01

+1

일반적인 Get Post 작업 흐름입니다. 동일한 이름을 가진 두 가지 작업 메서드가 필요합니다. 하나는 GET 전용입니다. POST에 대해서만 다른 요청합니다. Post 메소드는 문자열을 받아들이거나 ViewModels 안에 Viewodel에 포함 된 속성을 들여다 볼 수 있습니다. 개인적으로보기 모델을 사용하는 것이 훨씬 쉽습니다. 결론적으로 MVC 포스트 패턴에 대해 배워야한다. –

답변

0

나는 결과가 브라우저

을 보여주는 한 방법

public ActionResult Action(string referenceNumber, string newParameter){...} 

POST 방법

public ActionResult Action(Object myObject, string newParameter){...} 

를 GET ... 다음을 사용하여 문제를 해결할 수 있었다

했다

도메인/컨트롤러/액션? 참조 enceNumber = xxxx & newParameter = yyyy

관련 문제