【发布时间】:2019-04-23 15:30:55
【问题描述】:
我正在通过 MVC 表单发布 发布操作,我需要在 C# 中进行一些验证排序,只允许将一条记录发布到分钟..仅此而已。我有一个名为“CreatedWhen”的日期属性,它存储当前记录的日期。那么我该如何检查呢?
【问题讨论】:
-
这是一个典型的要求,尽管您可以在上一个帖子后一分钟内禁用表单帖子。但这不适用于分布式架构
标签: c# sql asp.net-mvc
我正在通过 MVC 表单发布 发布操作,我需要在 C# 中进行一些验证排序,只允许将一条记录发布到分钟..仅此而已。我有一个名为“CreatedWhen”的日期属性,它存储当前记录的日期。那么我该如何检查呢?
【问题讨论】:
标签: c# sql asp.net-mvc
您可以像这样在表单中禁用保存按钮。
在控制器 Post 方法中使用 GET 操作
ActionResult Post(){
var latest = context.Post.OrderByDesc(x=>x.CreatedWhen).FirstOrDefault();
var disable = (DateTime.Now - latest.CreatedWhen).Seconds < 60;
if(disable){
ViewBag.Disable = true;
}
}
在视图中
<button type="submit" @(ViewBag.Disable ? "disabled" : "")>Post</button>
【讨论】:
如果“CreatedWhen”记录在数据库中,则类似:
void PostRecord(...)
{
var existingRecord = _dbContext.TableName.OrderBy(x=>x.CreatedWhen).LastOrDefault();
if (existingRecord!=null && existingRecord.CreatedWhen <= DateTime.UtcNow - TimeSpan.FromMinutes(1))
{
... save record
}
}
【讨论】: