是否有可能在mvc

时间:2016-02-09 09:54:57

标签: jquery asp.net-mvc asp.net-mvc-3 razor

如果我在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);
    }`

1 个答案:

答案 0 :(得分:1)

您已获得有关如何获取当前表单的几个答案,如:

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

但是,由于您的按钮实际上是一个链接而不是type="submit",因此您可以通过在输入字段上按Enter来轻松绕过您的代码。例如https://jsfiddle.net/TrueBlueAussie/4tmz0xm5/键盘提交是表单处理中忽略的最常见问题。

有条件提交表单有几种模式,但都依赖于submit事件而非点击事件。

正如您所说,您只是希望链接正常提交表单,只需将链接更改为input type="submit",并将其设置为您需要的样式。

e.g。

<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$.ajax
  • 提交表单

示例:

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