我正在尝试调用将从cshtml页面生成的控制器方法。在控制器执行操作时,按钮必须保持关闭状态,并且必须在整个过程完成后才能启用。现在,该按钮已被禁用,但在该过程完成后将无法启用。另外,即使刷新页面,即使过程仍在进行,也不会启用该按钮,这应该不会发生。对我如何实现此目标有帮助吗?
.cshtml文件
function generate()
{
$('generate').attr('disabled',true);
alert('Process started')
var date=$(#ReportFromDate).val();
$ajax({
url:@Url.Content("Home/GenerateReport"),
type:"POST",
data:{ReportFromDate:date},
traditional:true,
success:function(response) {
//alert()
}
});
};
这就是我上面调用ajax的地方
<input name="generate" id="generate" type="button" value="generate" onclick="generate">
控制器文件
[HttpGet]
public ActionResult Report()
{
var reportModel= new ReportModel;
return View("Report",reportModel)
}
[HttpPost]
public ActionResult GenerateReport()
{
this.repository.generateReport(model);
return View("Report");
}
答案 0 :(得分:1)
问题是您在发送请求之前禁用了按钮,但是在完成ajax请求之后却不启用它。为此,您应该在$('generate').removeAttr('disabled')
内使用success
以及ajax请求的error
事件。
注意:同样,$('generate')
是不正确的,您应该访问具有.
前缀的类或具有#
前缀的id的元素。