c# - 单击按钮后禁用按钮并在进程结束后重新启用它
问题描述
我正在尝试调用将从 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");
}
解决方案
问题是您在发送请求之前禁用按钮,但在完成 ajax 请求后不启用它。为此,您应该使用您的 ajax 请求的$('generate').removeAttr('disabled')
内部success
和error
事件。
注意:也是$('generate')
不正确的,您应该使用带前缀的类.
或带前缀的 id访问元素#
。
推荐阅读
- reactjs - 在反应中进行配置查找的正确方法是什么?
- openmodelica - OpenModelica 中是否有一个元素/块可以在不连接的情况下远程使用信号?
- powershell - 格式化 MemberOf 和 Members
- git - 当我们使用交互式变基时,原始提交会发生什么?
- typescript - Typescript:在多个(与 Firebase 相关的)库中找不到正确的类型
- amazon-web-services - 使用无服务器框架部署 lambda 函数的事件源创建问题
- php - jQuery DIV 刷新后保留 PHP 登录数据的问题
- javascript - TypeError:app.getGreeting 不是函数
- function - PowerShell 从函数返回多个 WMI 对象值
- google-cloud-stackdriver - 基于 GCP 存储桶设置 Terraform stackdriver 警报