gpt4 book ai didi

jquery - 从 Asp.net-mvc Controller 操作返回 File 或 ErrorMessage 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 22:29:58 25 4
gpt4 key购买 nike

我的 ASP.NET-MVC 项目中有以下 JavaScript 代码和 Controller 操作:

Javascript:

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

C# Controller :

    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 调用,但我不确定如何下载我的 Fie() 并将其打包到 JSON 请求中(或者是否支持)。

最佳答案

我将向另一个 Controller 操作发起 $.get 请求,该操作将检查订单计数。返回该值以及错误消息(如果适用)。在需要时显示错误消息,否则处理重定向以下载文件。这是对 Controller 的额外调用,但它允许您完全控制并处理错误的可能性,而无需重定向用户。

$("#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
}
});
});

Controller 操作:

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 Controller 操作返回 File 或 ErrorMessage 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20895492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com