【问题标题】:(Validation) to Post only one record in a minute in MVC Post(验证)在 MVC Post 中在一分钟内仅发布​​一条记录
【发布时间】:2019-04-23 15:30:55
【问题描述】:

我正在通过 MVC 表单发布 发布操作,我需要在 C# 中进行一些验证排序,只允许将一条记录发布到分钟..仅此而已。我有一个名为“CreatedWhen”的日期属性,它存储当前记录的日期。那么我该如何检查呢?

【问题讨论】:

  • 这是一个典型的要求,尽管您可以在上一个帖子后一分钟内禁用表单帖子。但这不适用于分布式架构

标签: c# sql asp.net-mvc


【解决方案1】:

您可以像这样在表单中禁用保存按钮。

在控制器 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>

【讨论】:

    【解决方案2】:

    如果“CreatedWhen”记录在数据库中,则类似:

    void PostRecord(...)
    {
        var existingRecord = _dbContext.TableName.OrderBy(x=>x.CreatedWhen).LastOrDefault();
    
        if (existingRecord!=null && existingRecord.CreatedWhen <= DateTime.UtcNow - TimeSpan.FromMinutes(1))
        {
           ... save record
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多