2016-11-28 9 views
0

내가 달성하려는 것은 Umbraco Forms으로 작성된 양식의 HttpPost/OnSubmit 중에 사용자 정의하고 양식 및 모든 후속 워크 플로우의 기본 작동을 계속 유지 보수하는 것입니다.Umbraco 양식으로 양식 제출시 사용자 정의 방법

내 특정 시나리오에서는 양식의 입력을 분석 할 수 있어야하며 입력에 따라 다른 "감사합니다"페이지로 사용자를 보내고 원래 제출 된 양식의 일부 요소를 저장합니다 TempData에.

나는 다음 시도했다 : 나는의 DOCTYPE 컨트롤러 (RenderMvcController)를 만들려고했습니다

  • , 그러나 이것은 단지 당신 이 (가) HttpGet 및 게시하지 오버라이드 (override) 할 수 있습니다.

  • Umbraco Forms의 모듈의 기능을 잃어 버렸기 때문에 SurfaceController를 사용할 수 없습니다.

  • 사용자 지정 워크 플로를 사용해 보았지만 사용자의 이동 경로가 인 경우 비동기로 실행되며 사용자 환경을 변경할 수 없습니다.

유용한 문서가별로 없기 때문에이 작업이 예상보다 어려웠습니다.

새로운 컨트롤러를 만들고 UmbracoFormsController에서 상속과 OnFormHandled 메소드를 오버라이드 (override) : 다음을 수행해야합니다 사용자의 여정을 변경 양식의 제출 후 사용자 지정 프로 시저를 추가하고,이 절차에 따라하기 위해

답변

0

public class CustomUmbracoFormsController : UmbracoFormsController 
{ 
     protected override void OnFormHandled(Form form, FormViewModel model) 
     { 
      // Find the field in the form, then search for a matching value 
      var field = form.AllFields.FirstOrDefault(x => x.Alias == "deliveryOptions"); 
      var fieldValue = model.FormState[field.Id.ToString()].GetValue(0).ToString(); 

      // Add the value to the TempData 
      TempData["deliveryOptions"] = fieldValue; 
     } 
} 

위는 NULL

업데이트 기준을 고려하지 않는 기본 구현 위에서 새 컨트롤러를 사용하는 /Views/Partials/Forms/Form.cshtmlUmbracoFormsController을 입력하십시오. 우리가 양식 데이터를 분석하고 TempData의 일부 정보를 저장하는 위의 예에서

... 
@using (Html.BeginUmbracoForm<CustomUmbracoFormsController>("HandleForm")) 
... 

, 우리는 당신에게 우리가 TempData의 값을 분석하고 변경할 수있는 페이지를 감사 일반적인로 리디렉션 할 수있는 양식을 설정할 수 있습니다 사용자가 보는 것을 봅니다.

또한 양식 값을 변경하고 무엇을 업데이트해야하는지 알려면 에서 새로운 RecordStore 개체와 함께 검색 할 수있는 레코드 가이드가 필요합니다.