【问题标题】:Is it possible to get form iD in mvc是否可以在 mvc 中获取表单 iD
【发布时间】:2016-02-09 09:54:57
【问题描述】:

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

【问题讨论】:

  • 请同时添加 HTML
  • 试试这个 $('form').submit()。
  • @Jubi: 使用最新的 IE 版本进行测试,只有我能想象。你的葬礼:)
  • @jubi 是的,这是有区别的。在我的回答中,DOM 中可用的所有表单都将被提交。我给出了该解决方案,假设 DOM 中只有一个表单。在斯蒂芬的回答的情况下,只会提交一个表单,按钮所在的表单。
  • 关于如何获取 current 表单,您已经获得了几个“正确”答案(在 cmets 中),但因为您的按钮实际上是一个链接而不是 type="submit" ,您的代码很容易通过在输入字段上按 Enter 来绕过。键盘提交是表单处理中最容易被忽视的问题。有一些有条件提交表单的模式,但都依赖于submit 事件而不是点击事件。请描述您的页面应该如何工作(例如,您要验证内容吗?)。

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


【解决方案1】:

您已经获得了几个关于如何获取 current 表单的答案,例如:

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

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

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

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

例如

<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);
})

【讨论】:

  • 是的,使用按钮是有意义的。我想要使用 Ajax 进行部分提交,而不是完整的表单提交。我不确定如何进行 ajax 调用。所以我首先尝试使用表单提交来测试我的功能并将实现 ajax 调用。现在我需要进行 ajax 调用来完成功能
  • $.Ajax 表单提交非常简单。不过,您将需要捕获 submit 事件。我将添加一个简单的示例。
  • 添加了基本示例。如果您需要更多,我建议您提出一个新问题:)
  • 这个例子很清晰易懂。非常感谢。我现在遇到的问题是数据是空的
  • @jubi:您需要展示整个表单 HTML 和服务器代码。字段名称必须与控制器中的预期名称匹配。使用 Fiddler2 之类的工具来查看正在传输的内容。
猜你喜欢
  • 2010-09-17
  • 2018-04-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多