C# 单击按钮后禁用按钮,并在进程结束后重新启用

C# 单击按钮后禁用按钮,并在进程结束后重新启用,c#,ajax,C#,Ajax,我试图调用一个控制器方法,该方法将从cshtml页面生成。控制器执行操作时,按钮必须保持解除状态,并且只有在整个过程完成后才能启用。现在该按钮被禁用,但在流程完成后不会启用。此外,如果您刷新页面,即使进程仍在进行,按钮也会被启用,这是不应该发生的。关于如何实现这一点,是否有任何帮助 .cshtml文件 function generate() { $('generate').attr('disabled',true); alert('Process started') va

我试图调用一个控制器方法,该方法将从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">

问题是在发送请求之前禁用按钮,但在完成ajax请求之后不启用它。为此,您应该在ajax请求的
success
error
事件中使用
$('generate').removeAttr('disabled')


注意:另外,
$('generate')
是不正确的,您应该使用带有
前缀的类或带有
#
前缀的id访问元素。

您在哪里编写了重新启用按钮的代码?方法this.repository.generateReport(model)完成后,返回视图,新视图不应该是启用了按钮的视图吗@PriyankPanchal您正在使用ajax调用调用
GenerateReport()
,因此
return View()
将无法按预期工作。ajax调用需要一个JSON作为回报。返回JSON后,可以在ajax
success
callback中启用该按钮。您将不得不为此重新构造代码,而我们中的任何人都无法在给定的信息中提供太多帮助。
[HttpGet]
public ActionResult Report()
{
   var reportModel= new ReportModel;
   return View("Report",reportModel)
}

[HttpPost]
public ActionResult GenerateReport()
{
   this.repository.generateReport(model);
   return View("Report");
}