C# 调用另一个方法以返回视图的Post方法

C# 调用另一个方法以返回视图的Post方法,c#,asp.net,asp.net-mvc-4,post-redirect-get,C#,Asp.net,Asp.net Mvc 4,Post Redirect Get,在MVC4项目中,我需要根据可能出现的一些消息“刷新”页面,否则我只需重定向到页面,如果这些消息出现,我希望避免仅返回视图,因为当用户尝试刷新页面时,会导致重复提交 我想做的是 [HttpGet] public ActionResult SampleMethod() { viewModel = _builder.Build(); return View(viewModel); } [HttpPost] public void SampleMethod(SampleViewMod

在MVC4项目中,我需要根据可能出现的一些消息“刷新”页面,否则我只需重定向到页面,如果这些消息出现,我希望避免仅返回视图,因为当用户尝试刷新页面时,会导致重复提交

我想做的是

[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,为空

这是否与路由有关(在这个过程中完全迷失了方向)?这是正确的方法吗


谢谢

为了将对象模型从视图传递到控制器,您需要发出post请求。确保您使用的表单将生成post请求。 另外,将SampleMethodConfirmation方法设置为post


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

是否返回正确的视图?返回返回视图(“SampleMethod”,viewModel);也许它需要返回视图(“SampleMethodConfirmation”,viewModel);?您可能会尝试返回RedirectToAction(“SampleMethod”)而不是返回viewProblem如果我返回RedirectToAction是因为我丢失了视图的状态。如果我返回SampleMethodConfirmation,我将需要基本上复制SampleMethodOne中存在的视图代码(尽管可能使用部分代码,但它会工作)