我是 Razor pages .net core VS 2017 的网页开发新手。
我有索引页,以行和列的形式列出我的数据使用EF核心模型的列。
我还通过DropDowns和搜索框提供数据过滤选项。
我想将此表格过滤/未过滤数据导出为excel。 ---我认为我可以使用NPOI nuget包(http://www.talkingdotnet.com/import-export-excel-asp-net-core-2-razor-pages/)。
我想使用按钮点击的asp-page-handler执行此操作。
问题: 1.这是 GET 请求还是 POST ?
任何帮助都是赞赏的。
感谢。
答案 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;通过传递一个标识为文件下载的参数?