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

Posted

技术标签:

【中文标题】.net core 2.0 Razor pages VS 2017表格数据下载【英文标题】:.net core 2.0 Razor pages VS 2017 Tabular data download 【发布时间】:2018-08-16 11:22:46 【问题描述】:

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

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

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

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

我想使用带有按钮单击的 asp-page-handler 来执行此操作。

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

    如何将数据(例如具有所有数据的模型对象)传递给页面处理程序?

感谢任何帮助。

谢谢。

【问题讨论】:

【参考方案1】:

关于使用 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.使用 POST 而不是 GET 的任何特殊原因???带有按钮标签我们可以使用 GET 吗?因为当我到达 OnPostExport() 时,我没有受到 OnGetExport() 的影响......此外,发布请求将要求我保持页面状态(对吗?)。任何示例如何将过滤参数(很多)传递给页面处理程序? `
在 Excel 中下载:
维护您的页面状态与下载操作无关,因为您可以将表单的目标属性设置为等于_blank,以便您下载文件。网页不会重新加载。您只想下载文件。 我尝试使用 target = _blank。它只是在另一个选项卡中打开同一页面,并出现错误“对象引用未设置为对象实例”---因为它试图重新加载页面但没有可用的数据。 如果您有上面评论中的表格,您将无法获取数据。您必须使用将用于将存储在这些输入中的值提交给服务器的输入。【参考方案2】:

感谢@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() 方法并通过传递一个将其标识为文件下载的参数?

【讨论】:

以上是关于.net core 2.0 Razor pages VS 2017表格数据下载的主要内容,如果未能解决你的问题,请参考以下文章

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

ASP.NET Core 2.0/Razor Pages - 如何在请求之间将数据保存在 NonFactors MVC6 网格中?

使用 ASP NET Core 2.0 Razor 页面进行路由

ASP.NET Core 2.0 Razor 页面使用 AddMvcCore() 而不是 AddMvc()

Asp.net core razor pages 加载部分页面

如何在 ASP.NET Core 2.0 Razor 页面中填充下拉列表