我正在尝试通过表单中的下拉列表更改在我的视图中更改PartialView中的数据。现在,如果我点击提交按钮,我的表单没有问题,并且formcollection可用,但是当我尝试通过jquery提交更改事件时,表单提交正常但没有formcollection
有什么想法吗?
这是提交代码
$(function() {
$('#ddlSelection').change(function() {
var form = $("#myForm");
var action = form.attr("action");
var serializedForm = form.serialize();
$.post(action, serializedForm, function() { alert("Finished!") });
});
});
表格就是这样
<% using (Ajax.BeginForm("myForm", new AjaxOptions
{
UpdateTargetId = "divItemsList",
OnComplete = "ClearForm"
}))
{%>
<%=Html.Label("ddlFilter", "Parent Filter")%>
<%=Html.DropDownList("ddlFilter", "Please Select ...")%><br />
<fieldset>
<legend>Filter Option Details</legend>
<p>
<label for="Value">Value:</label>
<%= Html.TextBox("Value") %>
<%= Html.ValidationMessage("Value", "*") %>
</p>
</fieldset>
<%}%>
解
好吧,本来应该多关注,Ajax.Beginform
标签没有给表单一个id或名称,我认为他们认为它是不成功的,所以解决方案是手动添加htmlattributes。如此..
<% using (Ajax.BeginForm("TheAction", null, new AjaxOptions
{
UpdateTargetId = "divFilterItemsList",
OnComplete = "ClearForm"
}, new { ID = "myForm", Name = "myForm" }))
{%>
答案 0 :(得分:3)
答案 1 :(得分:1)
如果您有嵌套表单之类的东西(应该避免),我已经看到form.serialize会起作用。你总是可以尝试:
var serializedForm = $("#myForm input, #myForm select, #myForm textarea").serialize();
查看表格序列化是问题还是实际帖子。
当你看到HTML源代码而不只是那个名字时,你的表单的ID是“myForm”吗?
发布ASP代码后编辑:为什么不将JS更改为:
$(function() {
$('#ddlSelection').change(function() {
$("#myForm").submit();
});
});
我没有意识到你已经在使用.net的ajax表单了。应该只能触发表单的正常提交并使其正常工作。