通过 asp.net 核心剃须刀页面中的提交按钮传递模型数据

Pass model data through submit button in asp.net core razor page

我有一个小项目,我已经开始着手学习 ASP.net,特别是 razor 页面。我有一个表单可以将一些数据添加到页面上的列表中。问题是我无法找到一种方法来采用现有模型并简单地重新显示它。我目前的解决方案是简单地重新查询数据,然后将新数据附加到 display

ASP形式:

 <form method="post"> 
       <input type="submit" asp-page-handler="AddData" />
 </form>

代码隐藏:

 public class IndexModel : PageModel
  {
    public SampleIndexModel sampleModel;

   public void OnPostAddData()
   {
     sampleModel = new SampleIndexModel();
     AddRandomData();
     UpdateModel();
   }

这适用于不是来自数据库的示例数据。我想避免去数据库中获取我已经在内存中的数据——所以我的目标是这样的:

   public void OnPostAddData(SampleIndexModel currentData)
   {
     sampleModel = currentData;
     AddRandomData();
     UpdateData();
   }

您实际上在内存中有该数据。那是你的问题。您的 Razor 页面随每个请求实例化和处理,这当然意味着您的 sampleModel ivar 然后在下一个请求时被初始化。要将其传回,您需要确保所有数据都已回发,这意味着在您的表单中为每个 属性.

创建输入

但是,那是反模式。您不仅不应该以这种方式维护状态,而且还会打开您的应用程序进行操作,因为值可能会被客户端修改。如果您随后只是像以前那样接受发布的对象,则会引入各种安全问题。

多空,重新查询数据。这是最好和最安全的方法。如果您的查询特别复杂,缓存它可能是值得的,但请记住,从缓存中提取也是有成本的,特别是如果您做正确的事情并使用像 Redis 或 SQL 服务器。您必须评估使用缓存是否实际上比简单地进行查询更有效。