繁体   English   中英

HTTP Post不返回ASP.NET MVC Core 2中的视图

[英]HTTP Post does not return the view in ASP.NET MVC Core 2

发生的是,当我单击链接时,它会转到http get RsvpForm方法并返回视图。 在视图中,其返回具有表格。 但是在我提交表单后,它不会返回到重新加载视图。 我通过未清除文本框中的i键值来确认这一点。 我知道如何清除文本框,但我担心的是,当我单击表单中的post方法的Submit按钮时,我希望它重新加载相同的视图。 下面是我的代码。

    [HttpGet]
    public ViewResult RsvpForm()
    {
        return View();
    }

    [HttpPost]
    public ViewResult RsvpForm(GuestResponse guestResponse)
    {

        return View();
    }

当Modelbinder将请求数据绑定到模型时,它还会从该数据组成ModelState ModelState确定在绑定表单字段中显示的内容,因此这就是字段中包含已过帐数据的原因。

之所以这样工作是因为,如果表单中有错误(服务器端验证失败),通常您将再次返回视图,以便用户可以纠正他们的错误。 此外,此时,您希望已发布的数据位于适当的字段中,以便用户可以编辑错误内容,而不必完全重新填写表单。 由于返回的是“成功”视图,因此即使没有验证错误,也会发生相同的行为。

总之,您应该遵循PRG(后重定向获取)模式。 发布后,仅在出现错误时返回视图。 成功后,您将重定向。 如果希望用户成功再次看到相同的表单,则只需重定向到同一页面。 重定向操作会导致一个新的GET请求,从而从先前的POST中清除ModelState

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM