Razor 页面 For 循环表单以执行模型中的方法

机管局

我有一个简单的 Razor 页面,我正在尝试显示一个按钮,单击该按钮时将在后面的页面模型代码中执行一个方法,类似于 C# 的 WPF 按钮。我根本不想使用任何 javascript。

我已经到了一点,它有点做我想做的事,但在页面加载时,它为每个列表中的每个元素执行方法。这是我不想要的,我只想在按下按钮时执行该方法。

带有for循环的razor页面代码如下:

    @foreach (var item in @Model.UserData)
{

    <tr>
        <td>@item.Owner</td>
        <td>@item.InputPath</td>
        <td>@item.OutputPath</td>
        <td>@item.Status</td>
        <td>
            <form asp-action="@Model.DownloadCsv(@item.OutputPath)" method="post">
                <button>Download</button>
            </form>
        </td>

    </tr>
    <tr>
        <td colspan="5"> <hr /> </td>
    </tr>
}

在后面的代码中,我现在只有这个:

        public IActionResult DownloadCsv(string inputPath)
    {
        int i = 0;
        return Page();
    }
瑞安

您可以使用asp-page-handler选择处理程序并asp-route-{attribute}传递参数。并用于return File()下载文件而无需刷新页面。

页:

@page 
...
<td>
    <form method="post">
        <button type="submit" asp-page-handler="DownloadCsv" asp-route-inputPath="@item.OutputPath"
                class="btn btn-success">
            Download
        </button>
    </form>
</td>

页面模型:

public ActionResult OnPostDownloadCsvAsync(string inputPath)
    {
       //other logic
        return File("path\to\file", "application/octet-stream",
                    "DownloadFileName.csv");
    }

参考

使用 .NET Core Razor Pages 将文件下载到浏览器

使用 Asp.net core 将 PDF 返回到浏览器

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章