2012-10-24 2 views
0

두 개의보기간에 동일한 모델을 사용하고 있지만 두 번째보기에 모델을 게시하면 이전에 입력 한 모든 데이터가 URL에 저장됩니다. 데이터를 URL에 게시하지 않고 채워진 모델을 두 번째보기로 보낼 수 있습니까?URL을 사용하지 않고 볼 수있는 ASP.Net MVC 모델

컨트롤러 코드 :

[HttpPost] 
    public ActionResult ViewExample1(.Models.RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      return RedirectToAction("ViewExample2", model); 
     } 
     return View(model); 
    } 

    public ActionResult ViewExample2(Models.RegisterModel model) 
    { 
     return View(model); 
    } 
이 뷰가 다시 게시 될 때이 데이터를 유지하는 HiddenFor를 사용

두 번째 뷰 코드 :

<% using (Html.BeginForm(null, null, FormMethod.Post, new { id="ViewExample2"})) { %> 
    <%: Html.HiddenFor(model => model.UserName)%> 
<% } %> 
+2

일부 코드 또는 화면 예 URL을 추가합니다. – awright18

+0

여기에 코드를 올려주세요, 좋은 것입니다 – testCoder

+0

죄송합니다, 몇 가지 예제 코드를 게시했습니다. – user1770407

답변

1

RedirectToAction()으로 동작으로 리디렉션하면 GET이됩니다. 따라서 프레임 워크는 url의 뷰 모델을 작업에 전달합니다.

나는이 작업을 수행하는 것이 좋습니다 것 : 사람들이 더 나은 질문을하시기 바랍니다 이해할 수 있도록

[HttpPost] 
public ActionResult ViewExample1(Models.RegisterModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     // Do the work you want to do in the ViewExample2 action here! 
     // ... and then return the ViewExample2 view 
     return View("ViewExample2", model); 
    } 
    return View(model); 
} 

// This action is not needed anymore 
/*public ActionResult ViewExample2(Models.RegisterModel model) 
{ 
    return View(model); 
}*/ 
+0

고마워요, 그게 내가 마지막에했던 것입니다! – user1770407

0

내 생각 엔 당신이 폼 태그를 사용하고 있다는 것입니다 (BeginForm 대신) 메소드를 지정하지 않으므로 POST가 아닌 GET을 사용합니다.

BeginForm을 사용하여 변환하거나 메서드를 추가하십시오.

+0

두 번째보기에서 사용중인 코드를 게시 한 첫 번째보기는 거의 동일합니다. BeginForm()에서 무엇을 변경해야합니까? – user1770407

+0

당신은 나를 옳은 길로 데려갔습니다. Mystere Man에게 감사드립니다. 최대한 빨리 수정 된 코드를 게시 할 예정입니다. – user1770407

관련 문제