加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在Ajax.BeginForm中使用Html.ValidationSumm

发布时间:2020-12-16 07:42:41 所属栏目:asp.Net 来源:网络整理
导读:我有一个我在MVC项目中创建的 AJAX表单.如果使用普通浏览器函数提交表单并且发生页面刷新,则会获得表单中呈现的验证信息(基于ViewData.ModelState的内置MVC验证). AJAX表单是否有类似的验证机制? % using (Ajax.BeginForm("Create","GraphAdministration",n
我有一个我在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调用操作来第一次在页面中获取表单

您可以在.ascx文件中使用Ajax.BeginForm等.然后直接在动作中调用它.

当从浏览器进行Ajax调用时,您可以将其发布到相同的操作.这样您就可以进行通常的所有服务器端验证.您应该设置Ajax调用以使用操作返回的新html替换原始表单.

你必须要注意的一件事是,替换JavaScript将替换元素的内容而不是元素本身,所以请记住周围元素的id.

抱歉,如果你想要更多的细节只是评论,我会充实相关的位.

额外细节:

所有这些都假定您正在服务器上进行所有验证.

您将拥有一个包含所有页面内容的View,然后是.ascx文件中的部分内容,这是您的ajax表单所在的位置,需要设置为按id替换内容.如果它与你的ajax将要调用的动作同名,它是最简单的.

您可以使用Html.RenderAction将其导入View.您还可以使用相同方法的其他版本传递数据.你基本上以你的ajax代码的方式调用它.

您将需要将所有内容包装在具有id集的div中.在partial中使用此id作为要替换的内容.

当您呈现页面时,表单的html和所有ajax内容都将被放入.

调用ajax操作时,将返回部分内容并执行任何验证.它将替换您提供id的div的内容.

您可以使用[AcceptVerbs(HttpVerbs.Get)]和[AcceptVerbs(HttpVerbs.Post)]属性来拥有不同版本的操作

这种方法的主要问题是它不是自包含的,带有id的div是局部的外部.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读