2011-07-06 5 views
2

약간의 도움이 필요합니다. Razor로 MVC 3에서 약간의 프로젝트를 만들려고합니다. 버튼 2 개가있는 페이지 : 버튼 1과 버튼 2. 버튼 1을 클릭하면 페이지 1로 가고 싶습니다. 버튼 2 (페이지 2로 이동)와 동일합니다. 어렵지는 않지만, View (cshtml)가 아닌 Controller에서 리다이렉션을 원합니다. ActionName과 RedirectToAction을 사용해야한다는 것을 알고 있지만 어떻게 해야할지 모르겠습니다. 제발 도와주세요! 페이지 1에 대한 컨트롤러 액션에서면도기가있는 MVC 3 컨트롤러의 리디렉션

답변

1

입니다 그에 따라 리디렉션합니다.

매우 기본적인 예를 들어 당신이 당신의 형태로 두

<input type="submit" name="submit" value="<val>"> 

컨트롤을 추가 할 수 있습니다 볼 각각 같은 이름과 (대신) 다른 값이 다음 HttpPost 액션 제출라는 문자열 매개 변수를 추가 할 필요.

if(submit == "button1") { 
    RedirectToAction("Page1"); 
} else { 
    RedirectToAction("Page2"); 
} 

이 버튼이 단순화 된 예입니다

0

, 당신은 RedirectToAction를 사용할 수 있습니다

public ActionResult Process() 
{ 
    // do processing 

    // redirect to page 2 
    return this.RedirectToAction("Index", "Page2"); 
} 

당신은 프로세스 동작이 경우에 따라 GET 또는 POST 요청을 사용하여 페이지 1 버튼의 프로세스 조치를 호출 할 수 있습니다 멱등 원. 예 페이지 1 개보기 : 또는

@Html.BeginForm("Process", "Page1", FormMethod.Post) 
{ 
    <input type="submit" name="button" value="Submit" /> 
} 

, 당신이 사용할 수있는 ActionLink : 당신이 수행해야하는 버튼을 누른 다음 컨트롤러 액션의 HttpPost 부분에 누를 검사가

@Html.ActionLink("Redirect to Page 2", "Process", "Page1") 
0

을 눌러 진을 기반으로 리디렉션,하지만 난 당신을 생각 : 버튼 값 "단추 1"과 "단추 2"가 가정하면 다음 액션의 코드에서 당신은 사용할 수 있습니다 내 의미를 얻을 것이다. 버튼에 이름을 짓고 formcollection을 확인하여 콜렉션에 어떤 것이 있는지 확인하여 클릭 한 것을 나타낼 수 있습니다. 아래 코드를 참조하십시오.

@using (Html.BeginForm("Test", "Home", FormMethod.Post)) 
    { 

     <input type="submit" value="Go 1" name="go-1" /> 
     <input type="submit" value="Go 2" name="go-2" /> 
    } 

및 이제 동작 구현.

[HttpPost] 
    public ActionResult Test(FormCollection collection) 
    { 
     if (collection.AllKeys.Contains("go-1")) return View("Page1"); 
     if (collection.AllKeys.Contains("go-2")) return View("Page2"); 
     return View("Index"); 
    } 

그리고 thats.