如何:从控制器返回文件后重置Bootstrap按钮状态

时间:2019-04-03 18:36:14

标签: javascript .net model-view-controller twitter-bootstrap-3

我有一个按钮,单击该按钮即可执行文件导出,并且在服务器上可能是一个漫长的过程,因此我想将按钮置于“正在加载”状态。

但是,由于控制器返回了文件,因此该按钮永不会“重置”并返回到正常状态。我需要某种JavaScript事件,可以在其中调用重置。

Javascript

 $(".load-spin").on('click', function () {
      var btn = $(this).closest("ul").prev();
      $(btn).button("loading");
 });

HTML

 <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
      Book Actions <span class="caret"></span>
 </button>
 <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
 @if (item.Published)
 {
      <li><a href="@Url.Action("Manage", new { id = item.BookId })">Manage/Edit</a></li>
      <li><a href="javascript:void(0)" onclick="confirmDelete(@item.BookId)">Delete</a></li>
      <li><a class="load-spin" href="@Url.Action("Duplicate", new { id = item.BookId })">Duplicate</a></li>
      <li role="separator" class="divider"></li>
      <li><a class="load-spin" href="@Url.Action("Export", new { id = item.BookId })">Export Configuration</a></li>
      <li><a class="load-spin" href="@Url.Action("Download", new { id = item.BookId })">Download (for offline use)</a></li>
 }
 </ul>

控制器

 public ActionResult Export(int id)
 {
      // omitted for brevity
      return File(fullFileName, "application/zip", fileName);
 }

要调用$ {btn).button(“ reset”),我应该听哪种事件或动作?

1 个答案:

答案 0 :(得分:1)

不是在URL中添加操作,而是添加onclick事件,然后使用将事件发送到具有响应的控制器的函数来处理它,您可以在其中读取响应并采取相应的操作。