【问题标题】:asp.net mvc ajax form helper/post additional dataasp.net mvc ajax 表单助手/发布附加数据
【发布时间】:2010-03-31 06:53:15
【问题描述】:

我想使用 ajax 助手创建 ajax 请求,这些请求通过帖子发送额外的动态数据(例如,使用 class= blogCommentDateTime 获取最后一个元素并将最后一个元素的值发送到控制器,控制器将返回之后只有博客cmets)。

在 jQuery Form 插件的帮助下,我已经成功地做到了:

 $(document).ready(function () {
        $("#addCommentForm").submit(function () {

            var lastCommentDate = $(".CommentDateHidden:last").val();
            var lastCommentData = { lastCommentDateTicks: lastCommentDate };
            var formSubmitParams = { data: lastCommentData, success: AddCommentResponseHandler }

            $("#addCommentForm").ajaxSubmit(formSubmitParams);
            return false;
        });

此表单是使用 html.beginform() 方法创建的。

我想知道是否有一种使用 ajax.beginform() 帮助器的简单方法来做到这一点?

当我尝试使用相同的代码但将 html.beginform() 替换为 ajax.beginform() 时,当我尝试提交表单时,我发布了 2 个帖子(这是可以理解的,其中一个由helper,另外一个由我用上面的 JS。我不能创建 2 个请求,所以这个选项是 out)

我尝试摆脱 return false 并将 ajaxSubmit() 更改为 ajaxForm() 以便它只会“准备”表单,这只会导致一篇帖子,但它不包括我定义的额外参数,所以这也是毫无价值的。

然后我尝试保留 ajaxForm(),但只要点击表单上的提交按钮而不是提交表单时调用它(我想这几乎是同一件事),这也会导致 2 个帖子。

我问这个问题的最大原因是我在上面的 javascript 中遇到了一些问题,并使用了 mvc 框架提供的 mvc 验证(我将为此设置另一个问题)并且想知道这一点我可以进一步研究我的验证问题。

【问题讨论】:

  • 您找到解决方案了吗?

标签: jquery asp.net-mvc html-helper


【解决方案1】:
    function beginPost() {
        $("form").ajaxSubmit({ data: { id: "idnum", random: "randomness"} });
        return false;         
    }


using (Ajax.BeginForm(new AjaxOptions{ UpdateTargetId = "TargetDiv", OnBegin = "beginPost" })

到目前为止,这是我能想到的最好方法。这是一个 hack,因为它覆盖了 ajax 助手为您和上面的示例所做的初始接线(它正确返回了我的部分视图,但是我的 ajax 助手中给出的 updatetargetid 没有保留,所以它基本上会丢弃响应,我可以在 .ajaxSubmit 调用中修复这个设置这个 id,但这否定了使用 ajax 助手的优势)我想我会坚持我以前使用带有 html 助手的 jQuery 表单插件来写出我的表单的方法。在上面的示例中,我通过调用 .ajaxSubmit 手动提交它,然后返回 false 以便页面不会继续并发布,因为 ajax 帮助程序已将其连接到这样做。我的另一种方法,我认为这也是一个巨大的技巧(我什至没有尝试过)是尝试在表单中动态插入隐藏字段,并将 name 属性设置为我希望将附加数据传递给控制器并在 beginPost 方法中完成这一切。

我会坚持使用普通表单并使用 jquery 表单插件连接它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多