jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jquery – 从Asp.net-mvc控制器操作返回File或ErrorMessage的最佳方法是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的asp.net-mvc项目中有以下 javascript代码和控制器操作:

使用Javascript

$("#exportPPT").live('click',function (e) {
    window.location.href = "/Initiative/GenerateFile" + GenerateParams();
});

C#控制器:

public ActionResult GenerateFile(MyParams myParams)
    {
        var template = Server.MapPath(PPT_ROOT + "/template.pptx");
        IEnumerable<Order> orders = Model.GetOrders(myparams);
        var pptResults = GeneratePowerpointFile(orders);
        return File(pptResults.Content,"application/vnd.ms-powerpoint",pptResults.FileName);
    }

但在某些条件下,让我们说当orders.Count()为0然后而不是生成一个文件时,我宁愿向用户说一条错误消息,说你有错误.

鉴于上述代码,实现此目标的最佳方法是什么?我想把它改成ajax调用,但我不知道如何在json请求中下载我的Fie()和包(如果支持的话).

有什么建议?

解决方法

我会向另一个检查订单计数的控制器操作发起$.get请求.返回该值,并在适当的情况下返回错误消息.在需要时显示错误消息,否则处理重定向以下载文件.这是对控制器的额外调用,但它允许您完全控制并处理错误的可能性,而无需重定向您的用户.
$("#exportPPT").live('click',function (e) {
  $.get( "/Initiative/CheckForOrders" + GenerateParams(),function( data ) {
    if (data.IsValid) {
      window.location.href = "/Initiative/GenerateFile" + GenerateParams();
    } else {
      alert(data.ErrorMessage); // or show a div containing error message
    }
  });
});

控制器动作:

public ActionResult CheckForOrders(MyParams myParams)
{
  IEnumerable<Order> orders = Model.GetOrders(myparams);
  if (orders.Any())
    return Json(new { IsValid=true },JsonRequestBehavior.AllowGet);

  return Json(new { IsValid=false,ErrorMessage="No orders" },JsonRequestBehavior.AllowGet);
}

大佬总结

以上是大佬教程为你收集整理的jquery – 从Asp.net-mvc控制器操作返回File或ErrorMessage的最佳方法是什么?全部内容,希望文章能够帮你解决jquery – 从Asp.net-mvc控制器操作返回File或ErrorMessage的最佳方法是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: