Jquery 提交的多个提交按钮

Multiple Submit Button with Jquery submit

我在表单中有两个提交类型的按钮

 <button type="submit" id="submitBtn" name="submitBtn" value="Save">Save</button>
 <button type="submit" name="submitBtn" value="Print">Print</button>

在控制器动作中,我有

 [HttpPost]
 public async Task<IActionResult> Report(Report model, string submitBtn)
 {
    switch(submitBtn)
    {
        case "Save": ...
                     break;
        case "Print": ..
                     break;
    }
 }

上面的代码工作得很好。

但是,现在我需要在单击“保存”按钮时进行一些客户端验证。所以在 jquery 我添加了

 $('#submitBtn').click(function (e) { // id of the Save button
        e.preventDefault();
        // do validation and if all good then submit
            $('#reportform').submit();
 });

这里发生的事情是,当提交表单时,它正确地触发了控制器操作,但是传递给参数字符串变量 submitBtn 的值是 null

 public async Task<IActionResult> Report(Report model, string submitBtn) <-- submitBtn is null

知道为什么会这样吗?如果我遗漏了什么,请告诉我。

在提交表单之前,您必须将 submitBtn 附加到表单以将值发送给操作。

$('#submitBtn').click(function (e) { // id of the Save button
        e.preventDefault();
        // do validation and if all good then submit

        $('#reportform').append("<input type='hidden' name='submitValue' value='Save' />");
        $('#reportform').submit();
});

并为 btnPrint 添加 Id

$('#printBtn').click(function (e) { // id of the Save button
    e.preventDefault();
    // do validation and if all good then submit

    $('#reportform').append("<input type='hidden' name='submitValue' value='Print' />");
    $('#reportform').submit();
});