Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从“提交”按钮创建CSV文件,并在创建文件失败时显示错误消息_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 从“提交”按钮创建CSV文件,并在创建文件失败时显示错误消息

C# 从“提交”按钮创建CSV文件,并在创建文件失败时显示错误消息,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我试图有一个按钮,创建一个csv文件中的数据,并下载它。 有两种选择(据我所知) 我试图从Ajax调用控制器中的操作。 但这对我不起作用,。(所有代码都在我以前的帖子中:) 它不会生成该文件。 所以,我使用了一个提交按钮来调用这个动作,它是有效的,但在这种情况下 如果操作没有生成CSV文件,我需要能够向用户显示消息。 你知道怎么做吗 从视图对操作的调用: @using (Html.BeginForm("Export", "Index", FormMetho

我试图有一个按钮,创建一个csv文件中的数据,并下载它。 有两种选择(据我所知) 我试图从Ajax调用控制器中的操作。 但这对我不起作用,。(所有代码都在我以前的帖子中:) 它不会生成该文件。 所以,我使用了一个提交按钮来调用这个动作,它是有效的,但在这种情况下 如果操作没有生成CSV文件,我需要能够向用户显示消息。 你知道怎么做吗

从视图对操作的调用:

@using (Html.BeginForm("Export", "Index", FormMethod.Post))
{
  <input type="submit" id="btnSubmit" value="Export" />
}
尝试返回视图时: 返回视图(“索引”)

我需要送一个模型 我可以在返回视图时发送它吗? 以下是我如何称呼我的索引页:

public IActionResult Index()
{
    var orderList = _unitOfWork.Order.GetAll();
    dynamic myModel = new System.Dynamic.ExpandoObject();
    myModel.Order = _unitOfWork.Order.GetAll();
    myModel.ordercsv = new List<KTSite.Areas.Warehouse.Views.OrderWarehouse.CSVOrderLine>();
    ViewBag.getProductName =
       new Func<int, string>(returnProductName);
    ViewBag.getStoreName =
       new Func<int, string>(returnStoreName);
    ViewBag.getCost =
                  new Func<int, double, double>(returnCost);
    ViewBag.errSaveInProgress = false;
    ViewBag.ExistInProgress = false;
    return View(myModel);
}
public IActionResult Index()
{
var orderList=_unitOfWork.Order.GetAll();
dynamic myModel=new System.dynamic.ExpandoObject();
myModel.Order=\u unitOfWork.Order.GetAll();
myModel.ordercsv=新列表();
ViewBag.getProductName=
新Func(returnProductName);
ViewBag.getStoreName=
新Func(returnStoreName);
ViewBag.getCost=
新职能(返回成本);
ViewBag.errSaveInProgress=false;
ViewBag.ExistInProgress=false;
返回视图(myModel);
}

根据您的要求,我建议您可以使用iactionresult而不是fileresut,并设置一个viewbig来存储错误消息

更多详细信息,请参考以下示例:

    [HttpPost]
    public IActionResult Export()
    {
         // modify the if condition according to your requirement
        if (true)
        {
            ViewBag.ErrorMessage = "File not generated";
            return View("Index");
        }
        else
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("aaaaaaaaaaaaaaaaaaaaaaaa");
            //
            // generate data in string builder
            //
            return File(Encoding.ASCII.GetBytes(sb.ToString()), "text/csv", "aaaaaa");
        }

        //var orderList = _unitOfWork.Order.GetAll().Where(a => a.OrderStatus == SD.OrderStatusAccepted).OrderBy(a => a.Id);
        //if (orderList.Count() == 0)
        //{
        //    //Show message to the user that csv was not created
        //}

    }
视图:

@使用(Html.BeginForm(“导出”、“主页”、FormMethod.Post))
{
}
@如果(ViewBag.ErrorMessage!=null)
{
@节脚本{
$(文档).ready(函数(){
警报(“@ViewBag.ErrorMessage”);
});
}
}
结果:


有人吗?仍然坚持这一点:/Hi Brando,谢谢你的回答,我试过了,问题是索引页希望得到一个模型我编辑了原始文章,请看我如何调用我的索引页。你的意思是你想返回索引页并保留模型吗?刚刚发现我可以这样做:返回视图(“索引”,myModel);所以它起作用了!谢谢你的帮助。
    [HttpPost]
    public IActionResult Export()
    {
         // modify the if condition according to your requirement
        if (true)
        {
            ViewBag.ErrorMessage = "File not generated";
            return View("Index");
        }
        else
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("aaaaaaaaaaaaaaaaaaaaaaaa");
            //
            // generate data in string builder
            //
            return File(Encoding.ASCII.GetBytes(sb.ToString()), "text/csv", "aaaaaa");
        }

        //var orderList = _unitOfWork.Order.GetAll().Where(a => a.OrderStatus == SD.OrderStatusAccepted).OrderBy(a => a.Id);
        //if (orderList.Count() == 0)
        //{
        //    //Show message to the user that csv was not created
        //}

    }
@using (Html.BeginForm("Export", "Home", FormMethod.Post))
{
    <input type="submit" id="btnSubmit" value="Export" />
}

@if (ViewBag.ErrorMessage != null)
{
    @section Scripts{
        <script>

            $(document).ready(function () {
                alert("@ViewBag.ErrorMessage");
            });
 
        </script>

    }
}