.NetプラットフォームでMVC4を使用しており、次のhtmlが表示されています。ご覧のとおり、適切なアクションを実行するためにコントローラーに入るときに押されたボタンを区別するために、名前は同じです。
<tr>
<td>
<input type="submit" name="submitbutton" id="btnRefresh" value='Refresh' />
</td>
@if (Model.ShowGeneratePDFBtn == true)
{
<td>
<input type="submit" name="submitbutton" id="btnGeneratePDF" value='Generate PDF' />
</td>
}
</tr>
ただし、2番目の(「PDFの生成」)ボタンが押された場合、プロセスの実行中にユーザーが再度押すことができないように、このボタンを無効にする必要があります。無効にすると、HTMLにコントロールとして表示されなくなります(これは理解できます)。
これがjsです:
$('#btnGeneratePDF').click(function () {
DisableGeneratePDF();
});
function DisableGeneratePDF() {
$('#btnGeneratePDF').attr("disabled", true);
}
コントローラでは、押されたときのボタンの値が「PDFを生成」ではなくnullであるため、適切なアクションが実行されません。
コントローラの最初の行は次のとおりです。
[HttpPost]
public ActionResult ProcessForm(string submitbutton, ViewModelTemplate_Guarantors model, FormCollection collection)
これがビューの最初の行です。FormMethod.Postでも試してみましたが、別のページに移動しないため、AjaxOptionの方が効率的です。
@using (Html.BeginForm("ProcessForm", "Home", new AjaxOptions { HttpMethod = "POST" }))
ボタンを無効にしたときに「PDFの生成」値をコントローラーに正常に渡すにはどうすればよいですか?