2012-06-30 3 views
0

내 컨트롤러에서 다른보기를 반환하려고합니다. 그러나 올바른보기가 표시 되더라도 URL은 동일하게 유지됩니다.동일한 컨트롤러의 다른보기를 반환 할 때 URL이 동일하게 유지됩니다.

내 양식은 /Company/Create입니다.

@using (Html.BeginForm("Create", "Company", FormMethod.Post)) 
{ 
// Form here 
} 

그래서 기본적으로 양식과 모델은 /Company/Create 액션으로 제출됩니다. 제출 된 모델이 유효하면, 나는 데이터를 처리하고 내가 올바른보기는하지만 표시됩니다 말했듯이

return View("Index"); 

으로/회사 소개/인덱스보기로 리디렉션, URL (주소 표시 줄)은 여전히 ​​http://.../Company/Create

입니다 나도 시도했다 RedirectToAction("Index"); 그것은 또한 작동하지 않는다. 그리고 좋은 MVC 실천을 생각하지 않습니다. 하나의 레이아웃이 있고 회사보기가 렌더링됩니다 RenderBody()

아이디어가 있으십니까?

감사합니다.

편집 :

이 내 행동 방법, 당신은 변경된 URL을 원하는 경우 다른 조치로 리디렉션 할 필요가

[HttpPost] 
public ActionResult Create(CompanyCreate model) 
{ 
    /* Fill model with countries again */ 
    model.FillCountries(); 

    if (ModelState.IsValid) 
    { 
     /* Save it to database */ 
     unitOfWork.CompanyRepository.InsertCompany(model.Company); 
     unitOfWork.Save(); 
     RedirectToAction("Index"); 
     return View(); 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 
+0

당신이 작업에 대한 전체 코드를 게시 할 수 있습니까? return view는 url을 변경하지 않을 것입니다.하지만 redirecttoaction이 여러분이 기대하는 것을하지 않는다는 것에 놀랐습니다. 더블 포스트에 도움이 될 것입니다. – RubbleFord

+0

액션 코드를 comment.added 해 주셔서 감사합니다. 덕분에 –

답변

3

.

그러나 RedirectToAction은 즉각 리디렉션하지 않지만 ActionResult 개체 인 RedirectToRouteResult 개체를 반환합니다.

그래서 당신은 당신의 행동에서 RedirectToAction의 결과를 반환해야합니다

[HttpPost] 
public ActionResult Create(CompanyCreate model) 
{ 
    /* Fill model with countries again */ 
    model.FillCountries(); 

    if (ModelState.IsValid) 
    { 
     /* Save it to database */ 
     unitOfWork.CompanyRepository.InsertCompany(model.Company); 
     unitOfWork.Save(); 
     return RedirectToAction("Index"); 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 
+0

. 감사합니다. 나는 고전적인 웹 양식에서 왔어. Response.Redirect ("url")와 같은 것으로 생각했습니다. 내 나쁜 :) 다시 감사드립니다. –

관련 문제