我的页面上有表格,其中包含以下代码
<form class="form">
... bunch of inputs and presentation logic...
<div>
<input type="submit" class="btn btn-primary" id="submit_btn" value="Save Part"/>
<a class="btn" href="/Part/CopyPart/?id=@Model.ID ">Copy Part</a>
<a class="btn" href="/Part/Delete/?id=@Model.ID">Delete Part</a>
<a class="btn" href="/Part/PartList/?selectedType=@Model.PartType">Return To Part List</a>
</div>
@Html.HiddenFor(model => model.ID)
@Html.HiddenFor(model => model.Manufacturer)
@Html.HiddenFor(model => model.DateCreated)
@Html.HiddenFor(model => model.Manufacturer)
@Html.HiddenFor(model => model.IsActive)
@Html.HiddenFor(model => model.PartType)
</form>
我正在尝试使用pjax()提交此表单并刷新包含一些结果。我的js代码如下。
$(function() {
$('a').pjax({ container: "#update_panel", timeout: 2000 }).live('click', function() {});
$("#submit_btn").click(function() {
var form = $('#form');
$.pjax({
container: "#update_panel",
timeout: 2000,
url: "@Url.Action("UpdatePart","Part")",
data: form.serialize()
});
});
});
此代码提交调用我的UpdatePart()操作,但它将空模型传递给操作?如何使用表单内容填充模型以使其全部起作用?
答案 0 :(得分:5)
我在他们的文档中看到:https://github.com/defunkt/jquery-pjax 他们有一个简单的方法:
<div id="pjax-container">
</div>
<form id="myform" pjax-container>
... all inputs/submit/buttons etc ....
</form>
<script>
$(document).on('submit', 'form[pjax-container]', function(event) {
$.pjax.submit(event, '#pjax-container')
})
</script>
我个人之前没有看过这个例子......也许它是新的/不是......但希望它能帮助别人。
答案 1 :(得分:3)
确保通过从点击处理程序返回false来取消默认提交表单:
$("#submit_btn").click(function() {
var form = $('#form');
$.pjax({
container: "#update_panel",
timeout: 2000,
url: "@Url.Action("UpdatePart","Part")",
data: form.serialize()
});
return false; // <-- cancel the default event
});
答案 2 :(得分:3)
您使用ID引用表单,但表单有一个类而没有ID。尝试:
var form = $(".form");
或
<form id="form">