【发布时间】:2009-06-07 16:28:16
【问题描述】:
我在使用以下代码创建的一个 ASP.Net MVC 视图上有一个表单
<% using (Html.BeginForm(null, null, FormMethod.Post))
据我所知,使用此代码我无法控制设置表单的名称。我现在正在尝试编写一个 javascript 函数来提交表单,这可能在不知道表单名称的情况下吗?
谢谢
【问题讨论】:
我在使用以下代码创建的一个 ASP.Net MVC 视图上有一个表单
<% using (Html.BeginForm(null, null, FormMethod.Post))
据我所知,使用此代码我无法控制设置表单的名称。我现在正在尝试编写一个 javascript 函数来提交表单,这可能在不知道表单名称的情况下吗?
谢谢
【问题讨论】:
可以使用jquery提交表单:
<% using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm"})) { %>
(最后一部分是htmlAttributes参数)
这样做:
$("#myForm").submit();
并且不要忘记包含mvc附带的jquery-1.2.6.js(或使用更高版本)。
【讨论】:
如果你想在不命名表单的情况下使用 jQuery,并且页面上只有一个表单,你可以在页面中添加这样的链接:
<a href="#" class="submitForm">Submit</a>
然后添加这个 jQuery,它将连接到提交 每个 表单的链接:
$(document).ready(function () {
$("a.submitForm").click(function () {
$("form").submit();
});
});
所以这是一种不需要您为表单命名的方式(就像我刚刚在我的网站上所做的那样) - 只要您有一个。话虽如此,您可能想提交多个表单..
【讨论】:
.submit() 导致重定向到 POST 控制器方法返回的视图。是否可以不重定向提交?
如果您在该页面上只有一个表单,您可以使用以下方式访问该表单:
document.forms[0].
所以你可以添加一个链接:
<a href="javascript:document.forms[0].submit()">submit form</a>
【讨论】:
如果需要设置表单名称,请使用 BeginForm 方法的对象 htmlAttributes 参数。
<% using
(Html.BeginForm(null, null, FormMethod.Post,
new {name="MySuperForm"})) %>
要通过 javascript 提交表单,请查看this post。可能有用。
【讨论】:
这个简单的解决方案提交 Ajax 表单而不回发
<a href="#" onclick="$('#sbmt').trigger('click'); return false">Generate</a>
<input id="sbmt" type="submit" style="visibility: hidden" />
适用于 IE 和 Firefox。
【讨论】: