2013-05-07 2 views
0

저는 MVC를 처음 접했고 특정 등록 컨트롤러를 설치하는 방법에 대한 조언을 찾고 있습니다.등록 컨트롤러 작업을 어떻게 설정해야합니까?

저는 Register 메소드가있는 AccountController라는 컨트롤러가 있는데 Register.cshtml이 있습니다.

이제 내가 고집하는 것처럼 보이는 가장 큰 문제 중 하나는이 값이 위치 및 기타 다양한 매개 변수에 따라 변경됨에 따라 서비스의 응답을 기반으로 채울 필요가있는 두 개의 드롭 다운이 있다는 것입니다.

내 페이지가 시작되고로드되지만 사용자가 '등록'을 클릭하면 어떻게해야할지 모르겠습니다.

@model Adw.Models.RegisterModel //This is my model 

@Html.DropDownListFor(m => m.States, new SelectList(Model.States)); // I load my dropdowns here 

[AllowAnonymous] 
public ActionResult Register(RegisterModel model) 
{ 
    model.States = Services.GetStates().Payload; 
    model.Countries = Services.GetCountries().Payload; 
    return View(model); 
} 

제 질문은 사용자가 양식을 제출할 때 동일한 방식으로 다시 표시해야합니까? 그렇다면 이것이 초기로드가 아닌 제출임을 확인하는 가장 좋은 방법은 무엇일까요?

또한 오류 처리 방법을 많이 수행하지 못했고 위의 서비스 호출 중 하나라도 실패하면 등록을 완료 할 수없는 경우와 같은 제안을 사용할 수 있습니다. 새 페이지로 직접 연결해야합니다. 또는 같은 페이지에 이런 종류의 오류를 만들 수있는 쉬운 방법이 있습니까?

답변

1

두 가지 다른 방법을 만들어야합니다. GET 및 POST 요청 중 하나 :

[AllowAnonymous] 
[HttpGet] 
public ActionResult Register() 
{ 
    ... 
} 

[AllowAnonymous] 
[HttpPost] 
public ActionResult Register(RegisterModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     // create user 

     return this.RedirectToAction("SignIn"); 
    } 
    else 
    { 
     return View(model); 
    } 
} 

기본 템플릿에서 샘플을 검토 할 수 있습니다.

관련 문제