为了账号安全,请及时绑定邮箱和手机立即绑定

在ASP.NETMVC 3 Razor中使用Ajax.BeginForm

在ASP.NETMVC 3 Razor中使用Ajax.BeginForm

桃花长相依 2019-06-15 17:27:49
在ASP.NETMVC 3 Razor中使用Ajax.BeginForm是否有教程或代码示例使用Ajax.BeginForm在ASP.NETMVC 3中,是否存在不引人注目的验证和Ajax?对于MVC 3来说,这是一个难以捉摸的话题,而且我似乎无法使我的表单正常工作。它将执行Ajax提交,但忽略验证错误。
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

我认为所有的答案都遗漏了一个关键点:

如果使用Ajax表单以使其需要更新自身(而不是表单之外的另一个div),则需要将包含的div放在表格的。例如:

 <div id="target">
 @using (Ajax.BeginForm("MyAction", "MyController",
            new AjaxOptions
            {
                HttpMethod = "POST",
                InsertionMode = InsertionMode.Replace,
                UpdateTargetId = "target"
            }))
 {
      <!-- whatever -->
 }
 </div>

否则,您将像@david一样结束,结果将显示在一个新页面中。


查看完整回答
反对 回复 2019-06-15
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

我最终得到了Darin的解决方案,但首先犯了几个错误,这导致了一个类似David的问题(在Darin的解决方案下面的注释中),结果是发布到一个新页面。

因为在返回该方法后,我必须对表单做一些操作,所以我将其存储起来供以后使用:

var form = $(this);

但是,这个变量没有Ajax调用中使用的“action”或“method”属性。

$(document).on("submit", "form", function (event) {
    var form = $(this);

    if (form.valid()) {
        $.ajax({
            url: form.action, // Not available to 'form' variable
            type: form.method,  // Not available to 'form' variable
            data: form.serialize(),
            success: function (html) {
                // Do something with the returned html.
            }
        });
    }

    event.preventDefault();});

相反,您需要使用“this”变量:

$.ajax({
    url: this.action, 
    type: this.method,
    data: $(this).serialize(),
    success: function (html) {
        // Do something with the returned html.
    }});


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 688 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信