是否有可能在 mvc 中获取表单 iD

Is it possible to get form iD in mvc

如果我在 razor 视图

中明确指定和 id,是否可以在 jquery 文件中找到 formID

@using (Html.BeginForm()) 在这里我不想指定表单的 ID,单击按钮我想从我的 jquery 文件中提交此表单。

这是我的观点

 @using (Html.BeginForm())

这 jquery 不起作用。

$(".TestCreateSubmit").click(function (e) {
    e.preventDefault();
    alert("submit");
    var form = this;//this doesnt work
    form.submit();  //this doesnt work
});

是否可以在不指定id的情况下调用表单的Submit()方法

这是我在表单中的按钮。这是这种特殊形式的唯一按钮:

<div class="row">
    <div class="col-md-5 text-right">
          <a class="btn btn-default TestCreateSubmit" href="#" role="button">Save</a>
    </div>
</div>

控制器

    public ActionResult TestCreate(Test test)
    {
        if (ModelState.IsValid)
        {

            //need to save the application using the Staff Manager Service here
            Test objTest  = DatabaseService.Test Create(test);

            if (objtest == null)
            {
                return HttpNotFound();
            }


            return RedirectToAction("TestIndex");
        }


        return View(test);
    }`

关于如何获得 current 表格,您已经得到了几个答案,例如:

$(".TestCreateSubmit").click(function (e) {
    e.preventDefault();
    var form = $(this).closest('form');
    form.submit();
});

但是,由于您的按钮实际上是 link 而不是 type="submit",您的代码很容易通过在输入字段上按 Enter 来绕过。例如https://jsfiddle.net/TrueBlueAussie/4tmz0xm5/ 键盘提交是表单处理中最容易被忽视的问题。

有几个条件提交表单的模式,但都依赖于 submit 事件而不是点击事件。

如您所述,您只是希望 link 正常提交表单,只需将 link 更改为带有 type="submit"input 并将其样式设置为随心所欲

例如

<div class="row">
    <div class="col-md-5 text-right">
          <input class="btn btn-default TestCreateSubmit" type="submit" value="Save"/>
    </div>
</div>

那时您根本不需要任何代码。

更新以使用 Ajax:

根据评论,这是使用 Ajax 表单提交之前的测试。其步骤是:

  • 捕捉表单提交事件
  • 停止默认表单提交(例如 e.preventdefault()
  • 获取并序列化表单数据
  • 使用 $.post or $.ajax
  • 提交表格

示例:

$('form').submit(function(e){
    e.preventDefault();
    var $form = $(this);
    var data = $form.serialize();
    $.post(url, data);
})