gpt4 book ai didi

asp.net-mvc - 如何将 Html.ValidationSummary 与 Ajax.BeginForm 一起使用?

转载 作者:行者123 更新时间:2023-12-03 17:21:55 25 4
gpt4 key购买 nike

我在我的 MVC 项目中创建了一个 AJAX 表单。如果使用普通浏览器功能提交表单并且发生页面刷新,我会在表单中呈现验证信息(基于 ViewData.ModelState 的内置 MVC 验证)。

AJAX 表单是否有类似的验证机制?

<% using (Ajax.BeginForm("Create", "GraphAdministration", new AjaxOptions()
{
OnSuccess = "newGraphSuccess",
OnFailure = "newGraphFailure",
HttpMethod = "POST"
}))
{ %>
<!-- some form stuff in here !-->
<% } //end form %>

最佳答案

这实际上取决于您从何处获取要在表单发布后显示的内容。验证摘要是在服务器上创建的,因此您必须在服务器上进行工作。
例如,我在 .ascx 文件中使用了一些部分内容来呈现表单。您可以通过直接使用 Html.RenderAction 调用操作来第一次在页面中获取表单。
你会有你的 Ajax.BeginForm .ascx 文件中的等。然后直接在一个 Action 中调用它。
当从浏览器发出 Ajax 调用时,您可以将其发布到相同的操作。这样你就可以像往常一样进行所有的服务器端验证。您应该设置 Ajax 调用以使用操作返回的新 html 替换原始表单。
您必须注意的一件事是,replace JavaScript 将替换元素的内容而不是元素本身,因此请记住周围元素的 id。
抱歉,如果这有点令人费解,如果您想要更多详细信息,请发表评论,我将充实相关部分。
额外细节:
所有这些都假设您在服务器上进行所有验证。
您将拥有一个包含所有页面内容的 View ,然后是 .ascx 文件中的一些部分内容,这是您的 ajax 表单所在的位置,需要将其设置为按 id 替换内容。如果它与您的 ajax 将要调用的操作具有相同的名称,则最简单。
您可以使用 Html.RenderAction让它进入 View 。您还可以使用相同方法的其他版本传入数据。您基本上以与 ajax 代码相同的方式调用它。
您需要将其全部包装在一个带有 id 集的 div 中。在部分中使用此 id 作为要替换的内容。
当您呈现页面时,表单的 html 和所有 ajax 内容都将被放入。
当调用 ajax 操作时,部分内容将与执行的任何验证一起返回。它将替换您提供 id 的 div 的内容。
您可以使用 [AcceptVerbs(HttpVerbs.Get)] 获得不同版本的操作。和 [AcceptVerbs(HttpVerbs.Post)]属性
这种方法的主要问题是它不是自包含的,带有 id 的 div 是局部的外部。

关于asp.net-mvc - 如何将 Html.ValidationSummary 与 Ajax.BeginForm 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/289170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com