【发布时间】:2015-03-09 17:24:27
【问题描述】:
我的表单上有两个提交按钮,一个用于保存,一个用于解决:
<input type="submit" name="submitButton" value="Save" class="btn btn-default" />
<input type="submit" name="submitButton" value="Resolve" class="btn btn-default" />
我在控制器中处理这些是这样的:
//POST: Exceptions
[HttpPost]
public ActionResult Edit(string submitButton, PersonViewModel personViewModel)
{
switch (submitButton)
{
case "Save":
return (Save(person));
case "Resolve":
return (Resolve(person));
default:
return (View());
}
}
我知道我可以通过在我的视图模型上使用数据注释来设置某些属性,但是我只希望在用户尝试解析时需要这些特定属性,保存应该没有这样的限制。
实现这一目标的最佳方法是什么?
更新
上面的博客似乎建议您可以分配一个您希望在提交之前排除在验证之外的输入,方法是给它一个类并添加一些像这样的 JS:
<input id="btnSubmitSave" type="submit" name="submitButton" value="Save" class="btn btn-default ignore" />
<input id="btnSubmitResolve" type="submit" name="submitButton" value="Resolve" class="btn btn-default" />
$(function () {
var settngs = $.data($('form')[0], 'validator').settings;
settngs.ignore = ".ignore";
});
不幸的是,当我单击“保存”按钮时,它仍在尝试验证。
【问题讨论】:
-
你一定要试试this问题中的答案。
-
我已经在这个编辑页面使用了一个视图模型,我需要能够在这个页面上解析和保存,所以在这里拆分模型对我不起作用
-
“保存应该没有这样的限制” - 你有没有考虑过让你的保存按钮只是一个按钮而不是提交按钮?
-
两个提交按钮都需要将表单数据回传到服务器
-
@SelectDistinct 以供将来参考,您仍然可以在没有提交按钮的情况下发布到服务器。只需手动执行 ajax 发布并序列化表单即可。
标签: c# asp.net-mvc