.net core 2.0 Razor pages VS 2017表格数据下载

时间:2018-03-08 07:20:00

标签: asp.net-core-2.0 razor-pages

我是 Razor pages .net core VS 2017 的网页开发新手。

我有索引页,以行和列的形式列出我的数据使用EF核心模型的列。

我还通过DropDowns和搜索框提供数据过滤选项。

我想将此表格过滤/未过滤数据导出为ex​​cel。 ---我认为我可以使用NPOI nuget包(http://www.talkingdotnet.com/import-export-excel-asp-net-core-2-razor-pages/)。

我想使用按钮点击的asp-page-handler执行此操作。

问题: 1.这是 GET 请求还是 POST

  1. 如何将数据(例如包含所有数据的模型对象)传递给页面处理程序?
  2. 任何帮助都是赞赏的。

    感谢。

2 个答案:

答案 0 :(得分:0)

关于使用GET或POST的第一个问题,可以使用这两种方法,但我个人使用POST方法来处理这种情况。

对于您的第二个问题,我不会向服务器发送所有已过滤的数据,但我会传递过滤信息,这些信息将用于生成数据并将其导出到Excel文件。

更新1

我为你做了一个简单的例子。在cshtml文件中键入以下html:

<form method="post">
    <button type="submit" class="btn btn-info"> Export</button>
    <input asp-for="Value1" type="hidden" value="1" />
    <input asp-for="Value2" type="hidden" value="2" />
</form>

将使用这两个输入,以便向服务器提交将用于过滤数据的值。以下OnPost将返回一个静态文件,但您可以编写自己的代码,以便返回过滤后的数据并将其返回给浏览器。

[BindProperty]
public int Value1 { get; set; }

[BindProperty]
public int Value2 { get; set; }

public ActionResult OnPost()
{
    // example of returning a file
    return File("~/Images/accounts.png", "image/png", "FileNameForBrowser.png");
}

答案 1 :(得分:0)

感谢@pitaridis提供的宝贵意见。

我最终这样做了:

`    <a asp-page="./Index" asp-page-handler="Export"
    asp-route-param1 = "@Model.data1"
    asp-route-param2 = "@Model.data2"
    asp-route-param3 = "@Model.data3"
    class="btn btn-info">
    Export
    </a>
`

页面处理程序是OnGetExportAsync(...)。在处理程序调用我得到页面刷新,不确定为什么我必须再次重新填充所有控件。对此有何想法?

或其他选项可能是使用OnGetAsync()方法&amp;通过传递一个标识为文件下载的参数?