我有一个我在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 %>
Run Code Online (Sandbox Code Playgroud)
这实际上取决于表单发布后您从哪里获取要显示的内容。验证摘要是在服务器上创建的,因此您必须在服务器上完成工作。
作为示例,我使用 .ascx 文件中的一些部分内容来呈现表单。您可以通过直接调用操作来第一次在页面中获取表单Html.RenderAction
Ajax.BeginForm您将在 .ascx 文件中包含您的等。然后直接在action中调用。
当从浏览器发出 Ajax 调用时,您可以将其发布到相同的操作。这样您就可以像平常一样进行所有服务器端验证。您应该设置 Ajax 调用,以将原始表单替换为操作返回的新 html。
您必须注意的一件事是,替换 JavaScript 将替换元素的内容而不是元素本身,因此请记住周围元素的 id。
抱歉,如果这有点复杂,如果您想要更多详细信息,请发表评论,我将充实相关内容。
所有这些都假设您正在服务器上进行所有验证。
您将有一个视图,其中包含所有页面内容,然后是 .ascx 文件中的一些部分内容,这是您的 ajax 表单所在的位置,需要将其设置为通过 id 替换内容。如果它与您的 ajax 将调用的操作具有相同的名称,则最简单。
您可以使用Html.RenderAction将其放入视图中。您还可以使用同一方法的其他版本传入数据。您基本上以与 ajax 代码相同的方式调用它。
您需要将其全部包装在带有 id 集的 div 中。在partial中使用这个id作为要替换的内容。
当您渲染页面时,表单的 html 和所有 ajax 内容都会被放入。
当调用 ajax 操作时,将返回部分内容并执行任何验证。它将替换您为其指定 id 的 div 的内容。
[AcceptVerbs(HttpVerbs.Get)]您可以通过使用和[AcceptVerbs(HttpVerbs.Post)]属性来获得不同版本的操作
这种方法的主要问题是它不是自包含的,带有 id 的 div 是局部的外部的。
| 归档时间: |
|
| 查看次数: |
3629 次 |
| 最近记录: |