0
我在我的页面上有几个input
类型的submit
字段。对于其中的一些,我希望验证是正常发生的,但其他人则不会。每个submit
按钮将表单发回控制器,为每个按钮设置一个命令值。这允许该动作执行相关功能。但是,如果将类cancel
添加到相关的input
标记中,则不会对它们进行验证。但是,我没有获得发回控制器操作的命令的值。所以我可以不验证或得到一个命令值,但不是两者。停止从特定提交按钮的触发验证
设置;
模型;
public void SubData
{
public int ID { get; set; }
}
public void SomeViewModel
{
public int ID { get; set; }
public List<SubData> Data { get; set; }
}
在HTML中;
<input type="submit" name="command" value="AddData" />
<input type="submit" name="command" value="DeleteData/>
<input type="submit" name="command" value="SaveAll/>
控制器;
public ActionResult Index(SomeViewModel model, string command)
{
switch (command)
{
case "AddData":
model.Stuff.Add(new SubData());
break;
case "DeleteData":
// you get the idea...
break;
}
}
Javascript(taken from:https://stackoverflow.com/a/17401660);
$(function() {
// allow delete actions to trigger a submit without activating validation
$(document).on('click', 'input[type=submit].cancel', function (evt) {
// find parent form, cancel validation and submit it
// cancelSubmit just prevents jQuery validation from kicking in
$(this).closest('form').validate().cancelSubmit = true;
$(this).closest('form').submit();
return false;
});
});
所以,如果我有<input type="submit" class="cancel" value="AddSomething" />
然后确认不会发生(耶!),但我没有得到任何的动作的参数command
提供的值(嘘!)。取出cancel
触发器验证,一旦验证成功,我会得到command
的值。
的问题不在于我不能关闭验证输入,它是这样做停止'input'价值的subimition从发布到控制器操作 – DiskJunky