【问题标题】:ASP.Net MVC, Submit a form using javascriptASP.Net MVC,使用 javascript 提交表单
【发布时间】:2009-06-07 16:28:16
【问题描述】:

我在使用以下代码创建的一个 ASP.Net MVC 视图上有一个表单

 <% using (Html.BeginForm(null, null, FormMethod.Post))

据我所知,使用此代码我无法控制设置表单的名称。我现在正在尝试编写一个 javascript 函数来提交表单,这可能在不知道表单名称的情况下吗?

谢谢

【问题讨论】:

    标签: javascript asp.net-mvc


    【解决方案1】:

    可以使用jquery提交表单:

    <% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm"})) { %>
    

    (最后一部分是htmlAttributes参数)

    这样做:

    $("#myForm").submit();
    

    并且不要忘记包含mvc附带的jquery-1.2.6.js(或使用更高版本)。

    【讨论】:

    • 我喜欢 MVC 让这样的事情变得如此简单。
    • 要么您的支架不合适,要么自 2009 年以来情况发生了一些变化!这就是使用 Razor 语法对我有用的方法:@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "form"})) [编辑:刚刚注意到 ajbeaven 指出这在另一个答案中]
    【解决方案2】:

    如果你想在不命名表单的情况下使用 jQuery,并且页面上只有一个表单,你可以在页面中添加这样的链接:

    <a href="#" class="submitForm">Submit</a>
    

    然后添加这个 jQuery,它将连接到提交 每个 表单的链接:

    $(document).ready(function () {
        $("a.submitForm").click(function () {
            $("form").submit();
        });
    });
    

    所以这是一种不需要您为表单命名的方式(就像我刚刚在我的网站上所做的那样) - 只要您有一个。话虽如此,您可能想提交多个表单..

    【讨论】:

    • 光滑的解决方案。喜欢这个答案。 +1
    • .submit() 导致重定向到 POST 控制器方法返回的视图。是否可以不重定向提交?
    • 您可以让控制器返回具有不同数据的相同视图,然后向用户显示某种响应。如果您根本不希望页面重新加载,您可以完全放弃表单并将 Knockout 视图模型绑定到页面,然后使用 jQuery ajax 调用将数据发布到控制器 - 这将允许您发布到控制器而不发布经典意义上的表单。
    【解决方案3】:

    如果您在该页面上只有一个表单,您可以使用以下方式访问该表单:

    document.forms[0].
    

    所以你可以添加一个链接:

    <a href="javascript:document.forms[0].submit()">submit form</a>
    

    【讨论】:

      【解决方案4】:

      如果需要设置表单名称,请使用 BeginForm 方法的对象 htmlAttributes 参数。

      <% using 
        (Html.BeginForm(null, null, FormMethod.Post,
           new {name="MySuperForm"})) %>
      

      要通过 javascript 提交表单,请查看this post。可能有用。

      【讨论】:

        【解决方案5】:

        这个简单的解决方案提交 Ajax 表单而不回发

        <a href="#" onclick="$('#sbmt').trigger('click'); return false">Generate</a>
        <input id="sbmt" type="submit" style="visibility: hidden" />
        

        适用于 IE 和 Firefox。

        【讨论】:

          猜你喜欢
          • 2016-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-07
          • 2011-03-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多