通过 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 服务器。您必须评估使用缓存是否实际上比简单地进行查询更有效。
我有一个小项目,我已经开始着手学习 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 服务器。您必须评估使用缓存是否实际上比简单地进行查询更有效。