调用另一个用于返回视图的Post方法

时间:2013-10-17 14:47:39

标签: 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(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并且是空白的,

这是否与路由有关(在这方面很丢失)?这是正确的做法吗?

由于

1 个答案:

答案 0 :(得分:0)

为了将对象模型从视图传递到控制器,您需要发出一个post请求。确保使用将生成发布请求的表单。 同时将SampleMethodConfirmation方法设为帖子。

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