2014-02-21 3 views
1

둘 다 삽입 사용자와이 작업은 잘되지만 새 정보를 삽입 한 후에는 새 모델을 보내지 만 전에 삽입 한 work.the 정보는 오류없이 텍스트 상자에 남아 있습니다. 왜???변경 후 모델이 변경되지 않은 이유

반환보기 (새 사용자());

@using (@Html.BeginForm("RegisterUser", "UserManagement", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 

    <table class="Registertbl"> 
     <tr> 
      <td>نام*</td> 
      <td> @Html.TextBoxFor(m => m.FName, new { maxlength = 20})<br /> 
      </td>    
      <td>سمت*</td> 
      <td>@Html.TextBoxFor(m => m.Post, new { maxlength = 200})</td>     
     </tr> 
    </table> 
    <br /> 
     <input type="submit" value="Insert" class="insertBtn" /> 
     @Html.ActionLink("back", "ViewUserList", "UserManagement") 
} 

// 컨트롤러

[HttpGet] 
    public ActionResult RegisterUser() 
    { 
     return View(new User()); 
    } 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult RegisterUser(Common.UsersManagement.Entities.User model) 
    { 
     SetUserManagement(); 
     var Result = userManagement.RegisterUser(model); 
     if (Result.Mode == Common.Extensions.ActionResultMode.Successfully) 
     { 
       return View(new User()); 
     } 
     // if not Successfull 
     return View(model); 
    } 

답변

3

maf748이 올바른지, 당신은 포스트 - 리디렉션이-받아야 전달하는 모델에서 가져온 것, 당신에게 빈 ViewDataDictionary을 줄 것이다. TempData를 사용하여 메시지가 표시되어야하는 GET 작업 메소드와 통신 할 수 있습니다 (예 :

TempData.Message = "User registered."; 
return RedirectToAction("RegisterUser"); 

그런 다음 RegisterUser보기에서 TempData.Message에 값이 있는지 확인할 수 있습니다.

그러나 새 모델을 반환하기 전에 ModelState.Clear()를 시도해 볼 수도 있습니다. 이 문제는 사용자가 브라우저에서 페이지를 새로 고치면 Post 메소드로 다시 보내고 "데이터를 다시 제출 하시겠습니까?"라는 메시지와 함께 브라우저에 메시지를 표시하고 잠재적으로 중복 등록을 생성합니다. 귀하의 데이터베이스.

+0

TempData 좋은 help.tnx alottttttt –

+0

나는 또 다른 문제가 : 만약 사용자가 여러 개의 탭 메시지가 표시됩니다 다른 pages.how의 사용자가 그 문제를 해결할 수 있습니까? [질문 링크] (http://stackoverflow.com/questions/21980420/tempdata-message-in-deferent-tab) –

3

다시 GET의 RegisterUser로 리디렉션하십시오.

이유는 MVC에 양식을 제출할 때 ModelState (기본적으로 요청 값)의 모든 값이 뷰에 전달하는 모델보다 우선합니다. 리디렉션 때문에 모든 값은 당신이 (새로운 사용자())

if (Result.Mode == Common.Extensions.ActionResultMode.Successfully) 
{ 
    return RedirectToAction("RegisterUser"); 
} 
+0

아니요. 비어있는 방법으로 User.is에 메시지를 표시하고 싶습니다. ViewDataDictionary ?????? –

+1

나는 Craig W에 의해 설명 된 이유 때문에이 방법을 고수 할 것을 권합니다. W – maf748

+0

내가 찾을 수있는 TempData가 필요합니다. –

관련 문제