4

中使用两个重载的操作方法(一个用于 GET 操作,另一个用于 POST 操作)实现 post-redirect-get 模式。

在所有 MVC post-redirect-get 模式示例中,我看到了 post-redirect-get 过程的三种不同的操作方法(对应于 Initial Get、Post 和 Redirection Get),每种方法都有不同的名称。这真的需要在中具有至少三个不同名称的操作方法吗?

例如:(下面显示的代码是否遵循 Post-Redirect-Get 模式?)

public class SomeController : Controller
{
    // GET: /SomeIndex/
    [HttpGet]
    public ActionResult Index(int id)
    {
        SomeIndexViewModel vm = new SomeIndexViewModel(id) { myid = id };
        //Do some processing here
        return View(vm);
    }

    // POST: /SomeIndex/
    [HttpPost]
    public ActionResult Index(SomeIndexViewModel vm)
    {
        bool validationsuccess = false;
        //validate
        if (validationsuccess)
            return RedirectToAction("Index", new {id=1234 });
        else
            return View(vm);
        }
    }
}

谢谢你的回复。

4

3 回答 3

1

从单元测试的角度思考。

如果一切都在一个动作中,那么代码将很难测试和阅读。我认为您的代码没有任何问题。

于 2012-09-11T10:43:10.147 回答
1

你的代码对我来说似乎很好。遵循模式,这就是我们在所有项目中的做法。

于 2012-09-09T16:53:37.693 回答
0

如果您有相同的操作名称,那么您应该区分哪个操作是 GET,哪个是 POST。此外,您的方法签名必须不同以避免编译错误。

这两个“要求”在您的代码中都可以,因此在 PRG 中使用这些操作没有问题。

于 2012-09-09T17:05:35.323 回答