2013-10-17 82 views
0

在一個MVC4項目中,我需要根據一些可能存在的消息來「刷新」頁面,否則我只是重定向到一個頁面,如果再次呈現頁面消息存在我想避免只返回視圖,因爲它會導致當用戶嘗試刷新它時雙重提交。Post方法調用另一個返回視圖

我想要做的就是這個

[HttpGet] 
public ActionResult SampleMethod() 
{ 
    viewModel = _builder.Build(); 
    return View(viewModel); 
} 

[HttpPost] 
public void SampleMethod(SampleViewModel viewModel) 
{ 
    if (ModelState.IsValid) 
    { 
     var response = serviceCall; 
     var errorMessages = response.ErrorMessages; 

     if (!errorMessages.Any()) 
     { 
      //Redirect to proper view 
     } 
     else 
      vm = _builder.Build(); 
    } 

    else vm = _builder.Build(); //There is some validation error I rebuild 

    CashbackOffersConfirmation(vm); 
} 

public ActionResult SampleMethodConfirmation(SampleViewModel viewModel) 
{ 
    return View("SampleMethod", viewModel); 
} 

它經歷的過程 但最後一頁是.../SampleMethod的,而不是.../SampleMethodConfirmation是空白,

這是關於路由(相當迷茫)嗎?這是一個正確的方法嗎?

感謝

+0

您是否返回了正確的視圖?你正在返回View(「SampleMethod」,viewModel);也許它需要被返回View(「SampleMethodConfirmation」,viewModel);? –

+0

你可能會嘗試返回RedirectToAction(「SampleMethod」)而不是返回視圖 –

+0

如果我返回RedirecToAction的問題是我失去了視圖的狀態。如果我返回SampleMethodConfirmation,我需要基本上覆制SampleMethod中存在的視圖代碼(也許可以使用部分視圖代碼) – mitomed

回答

0

爲了從視圖中的對象模型傳遞到控制器,你需要做一個POST請求。確保你使用了一個將生成發佈請求的表單。 另請製作SampleMethodConfirmation方法。

例如:在控制器的方法頂部添加[HttpPost]

相關問題