Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 620|回复: 0

(原创)mvc中ajax.beginform重复提交的问题解决

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-8-27 11:44:11 | 显示全部楼层 |阅读模式

    最近处理mvc的一个小程序,废话不多说,程序很简单,如下图:

    三块,采用load方式对数据进行操作,在处理提交的时候,出现了一个诡异的问题,我每一次提交的时候,都会将数据提交2次。

    导致提交的数据被添加了2次,程序本身没有大的错误。
    我们看一下三段的代码
    leftindex(左边栏)
    @{
    Layout = null;
    }

    <!DOCTYPE html>

    <html>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryval")
    <head>
    <meta name="viewport" content="width=device-width" />
    <script src="~/Resouces/js/Commnon.js"></script>
    <script>
    $(document).ready(function () {

    $("#menu li a").on("click", function () {
    addwait();
    $("#main").load($(this).attr("ref"), function (response, status) {
    if (status != "success") {
    alert("加载失败 : " + status);
    }
    delwait();
    });
    });
    });
    </script>

    <title>LeftIndex</title>
    </head>
    <body>
    <div>
    <ul id="menu">
    <li><a href="javascript:void(0)" title="查看用户详情" ref="/UserManager/UserList">用户管理</a></li>
    <li><a href="javascript:void(0);" title="查看用户详情" ref="#">查看设置用户组</a></li>
    <li><a href="javascript:void(0);" title="查看用户详情" ref="#">查看设置权限组</a></li>
    </ul>
    </div>
    <div id="main">

    </div>
    </body>
    </html>

    列表功能区域 userlist:
    @{
    Layout = null;
    }

    @model IEnumerable< SysDB.DB.TbUser>


    <!DOCTYPE html>
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryval")
    <html>
    <head>
    <meta name="viewport" content="width=device-width" />
    <title>用户列表</title>
    <link href="~/Resouces/Css/maincommon.css" rel="stylesheet" />
    <script>
    $(document).ready(function () {
    $(".btnadd").on("click", function () {
    $(".dataarea").hide(100);
    $("#setarea").show(500);
    });
    });
    function showarea() {

    $(".dataarea").show(500);
    $("#setarea").hide(100);

    }
    </script>
    </head>
    <body>
    <div id="main">
    <div id="optarea">
    <div class="btnadd fleft">添加</div>
    <div class="btndel fleft">删除</div>
    <div class="btnfind fleft">查找</div>

    </div>
    <div class="dataarea">
    <table id="uptb">
    <tr>
    <td width="60px">用户id</td>
    <td width="160px">用户姓名</td>
    <td width="60px" >密码</td>

    </tr>

    @foreach (var item in Model)
    {
    <tr>
    <td>@item.id</td>
    <td>@item.username</td>
    <td>@item.password</td>
    <td>@Ajax.ActionLink("添加", "UserList",new{strid=@item.id}, new AjaxOptions { HttpMethod="post", UpdateTargetId="main"})</td>
    </tr>
    }

    </table>
    </div>
    @Html.Partial("addUserList",Model);
    </div>
    </body>
    </html>
    添加部分:采用分布视图 adduserlist
    <div id="setarea" style="display: none;">
    <div id="setdata">
    @using (Ajax.BeginForm("addUserList", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "setdata" }))
    {
    <ul>
    <li>
    <p>用户id:</p>
    @Html.TextBox("id")
    </li>
    <li>
    <p>用户帐号:</p>
    @Html.TextBox("netname")
    </li>
    <li>
    <p>用户名:</p>@Html.TextBox("name")
    </li>
    </ul>
    <input type="submit" value="提交2" id="btnsub" />
    }
    </div>
    </div>
    整体来看,看出什么地方有问题了么?对了,我的
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryval") 语句被引用了两遍,一遍在left栏中,一遍在userlist中,他导致了jquery.unobtrusive-ajax.js文件被引用了2次,所以导致我在使用submit提交的时候生成了2个from,数据被重复提交2次。
    所以各位在处理mvc的时候一定要注意js的引用,并且如果有能力自己写ajax的话还是自己写ajax比较方便。希望对新上手mvc的同学有帮助

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 12:06 , Processed in 0.056865 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表