Razor Pages Core - 更新模型或将附加数据传回 Post 方法

Razor Pages Core - Update Model or pass additional data back to Post Method

希望我能简明扼要地问这个问题...

对使用 .Net Core 的 Razor Pages 还很陌生,但开始了一个项目,希望我能找到解决当前问题的帮助。我确信可能有几种方法可以解决这个问题,因此最好将我希望实现的目标与我目前所知道的进行比较。

为了更详细一点,我有一个名为 Entry 的模型。每个 Entry 可以有很多 EntryImages。因此,在我的 Razor Pages 项目中,在条目的编辑屏幕上,我希望能够添加新的条目图像(一次一个)。

因此,在 Entry 编辑页面上,我有一个包含文件选择器的模式弹出窗口,它允许我将图像文件传递回 Post 方法使用 IFormFile:

提交

在后面的代码中,我然后获取此文件并将图像信息放入 EntryImage 中,然后进入 Entry,然后传递给数据库:

但是,我还希望能够针对我刚刚传递给数据库的图像添加评论。这是我理解不足的地方。我希望我可以像这样更新页面中的模型(这是一个测试示例):

我尝试在模型 Entry 中添加一个新的 EntryImage - 但是回到代码中的 post 方法后面,模型不包含新添加的EntryImage

我知道我的尝试很混乱,但希望它能很好地说明我想要实现的目标。我觉得有一种非常简单的方法可以做我需要的事情,但为了尝试,我似乎还找不到正确的答案。

您可以在文件选择器后面输入另一个文本:

<div class="form-row">
    <div class="form-group">
        <input name="files" type="file" />
    </div>
</div>
<div class="form-row">
    <div class="form-group">
        <input name="comment" type="text"  />
    </div>
</div>

然后在post方法中,还有一个参数接受注释值:

public async Task<IActionResult> OnPostAsync(IFormFile files, string comment)
{
  //...
}

标记的答案感觉是正确的和最佳实践。然而,我还发现您可以在代码隐藏中通过控件的名称从控件中获取值,使用:

string comment = (string)Request.Form["txtComment"];

其中 txtComment 是文本输入控件的名称。