2009-05-17 9 views
2

양식을 입력 받아 조건부로 입력 한 항목이있는 경우 조건부로 확인 페이지로 리디렉션하는 웹 응용 프로그램과 같은 마법사가 나타납니다.제어 컨트롤러 작업 호출 순서

"이미 해당 이름의 시스템에 제품이 있습니다. 계속 하시겠습니까?"라는 줄을 따라 가십시오. "

내 컨트롤러에서 "확인"작업을 수행 할 수 있지만이 작업은 초기 "추가"작업으로 만 호출해야합니다.

제 질문은 컨트롤러 동작 호출 순서를 제어하는 ​​가장 좋은 방법입니다. 분명히 누군가가 // URL 확인 및 데이터 스푸핑을 입력 할 수 있습니다.

희망을 말하고 있습니다.

감사합니다.

답변

3

가끔 사용자가 가끔 확인하고 싶어?

그렇다면 확인 작업에 양식을 제출하십시오. 당신은 단순히 당신의 데이터 컨텍스트 코드 대신 RedirectToAction하지만, 무엇을 만들 배치 할 수 있습니다으로 다음

public ActionResult Confirm(MyObject mObj, string confirmButton) 
{ 

    if(NotAlreadyExists(mObj) || confirmButton) 
     return RedirectToAction("Create", mObj) 
    else 
    { 
     ModelState.AddModelError("DuplicateProduct","Please confirm"); 
     ViewData["showConfirm"] = true; 
     return View(mObj); 
} 
} 

Ofourse는, 당신은 거의

뷰는 다음 showConfirm를 찾을 필요가있을 것이다 ... 특별한 조치를 필요가 없습니다 메시지 + 확인 버튼을 표시합니다.

1

컨트롤러 동작 호출 순서를 제어 할 수 없습니다.

그러나이 개념을 응용 프로그램에 코딩 한 내용으로 승격시킬 수는 있습니다.

방문자가 세션 상태, 쿠키, 조치에서 조치로 토큰을 전달하고 asp.net mvc에서 tempdata를 한 단계 씩 보았는지 확인할 수있는 몇 가지 방법을 생각해 볼 수 있습니다.

TempData가 가장 쉽습니다.이 기능을 사용하기 만하면됩니다.

Have Have는 Confirm으로 리디렉션되기 전에 TempData에 특별한 값을 넣습니다. TempData에 Confirm 값이 표시되지 않으면 Add로 다시 리디렉션됩니다. 그곳에 있으면 Confirm은 정상적인 업무를 수행합니다.