asp.net-mvc - ASP.NET MVC : Posting Back from the View

标签 asp.net-mvc

如果需要的话,是否认为更好的做法是回发到进行渲染并从原始 Controller 进行重定向的同一 Controller ?或者说从 View 跳转到不同的 Controller 是一样的吗?

最佳答案

我在 Controller 中创建了两个重载操作,一个使用 HTTP GET 呈现输入表单,另一个使用 HTTP POST 处理表单发布。像这样的事情:

  public ViewResult Foo()
  {
    return View();
  }

  [AcceptVerbs(HttpVerbs.Post)]
  public ViewResult Foo( FormCollection form )
  {
    // process input
    if (inputOK)
      return RedirectToAction("Index");
    return View();
  }

这样做的好处是,如果出现错误, View 将重新呈现,并显示任何错误和验证消息。如果成功,则会重定向到另一个操作,这样可以避免用户刷新页面时浏览器上出现重复发布警告 - 请参阅 Post/Redirect/Get on Wikipedia还有这个blog entry by Stephen Walther .

除了使用 FormCollection 之外,还有其他选择,例如简单参数列表或绑定(bind)到对象。看这个article by ScottGu .

关于asp.net-mvc - ASP.NET MVC : Posting Back from the View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/418366/

相关文章:

asp.net-mvc - ASP.NET MVC 从 URL 获取路由值

c# - 列表中的字符串分隔

asp.net-mvc - FluentValidation Autofac ValidatorFactory

c# - 在 MVC 中禁用 html 帮助文本框的自动完成

asp.net-mvc - 在 .NET MVC 3.0 中使用 $.getJSON

c# - 在 mvc 2 中测试自定义 actionresult

asp.net-mvc - NUnit框架生命周期执行顺序是什么?

asp.net-mvc - 使用 Session 进行 Asp.net MVC3 长轮询

asp.net - 如何将 .aspx 页面添加到现有的 MVC 4 项目?

asp.net-mvc - Asp .Net Core - 无法安装 Microsoft.AspNet.Mvc nuget 包