【发布时间】:2014-04-13 22:07:45
【问题描述】:
我在这里查看了几篇帖子以寻求解决方案。我会尝试一个新的问题。
我的表格:
<form method="post" action="@Url.Action("Manage")" data-cs-ajax="true" data-cs-target="#catalogList" >
它有一个自动完成字段和分页,非常类似于 Scott Allen 的 OdeToFood 示例。
有:
<input type="submit" value="Update" class="btn btn-default" />
它会更新一些已过滤的项目以从中选择 - 一切都很好 - 而且:
<input type="submit" name="btnSave" id="btnSave" value="Save" class="btn btn-default" />
他们都成功命中:
//POST: /WebCatalog/Manage/5
[HttpPost, ActionName("Manage")]
[ValidateAntiForgeryToken]
public ActionResult Manage([Bind(Include = "Id,CatalogId,CatalogColourId,CatalogSizeId,CatalogCategoryId,CatelogSupplierId,StartDate,EndDate,Active,isSubmitted")] WebCatalogViewModel model, string searchTerm = null, int page = 1)
{ ...
由于 javascript,它们确实触发了控制器操作:
$(function () {
var ajaxFormSubmit = function () {
var $form = $(this);
var options = {
url: $form.attr("action"),
type: $form.attr("method"),
data: $form.serialize()
};
$.ajax(options).done(function (data) {
var $target = $($form.attr("data-cs-target"));
var $newHtml = $(data);
$target.replaceWith($newHtml);
var options = {};
$newHtml.effect("highlight", options, 500, doneEffect);
});
return false;
};
现在...
我想在模型中设置一个字段,让控制器知道第二个 btnSave 按钮被点击...保存记录,当然....
苏...
$(function () {
$("#btnSave").click(function () {
$("isSubmitted").val("1");
return true;
});
});
这会触发:在 ajaxFormSubmit 中通过 ajax 提交页面之前,$(#btnSave") 的按钮 jQuery 代码会成功触发。
但是,在控制器动作中,isSubmitted 始终为 0。
我试过了:
$("isSubmitted").val(1);
我已尝试将表单设置为 method='get',但仍然没有发布 - 不过,我可能会尝试在 btnSave.click js 函数中使用 javascript 更改方法 - 不知道该怎么做...如果我无法在表单控件中保存值,那为什么我可以更改表单方法??
我尝试了 $Ajax.ActionLink - 但总是收到 500 IIS 错误。
基本上,我需要一种方法来知道用户点击的是保存按钮,而不是更新按钮。
感谢任何建议!
【问题讨论】:
-
似乎 $("isSubmitted") 中的选择器丢失了,例如
$("#isSubmitted")用于 id isSubmitted 的输入。 -
@NoGray - 你能添加这个作为答案吗?我欠你一杯啤酒。不,两个。就是这样。完美。
标签: jquery asp.net-mvc form-submit submit-button