C# 为用户输入数据设置时间界限的最佳方法是什么?(asp.net mvc)

C# 为用户输入数据设置时间界限的最佳方法是什么?(asp.net mvc),c#,asp.net,asp.net-mvc,date,action-filter,C#,Asp.net,Asp.net Mvc,Date,Action Filter,我实际上是在思考时间的问题。我希望允许用户每周在周一到周三(周一00:00到周三23:59)之间只输入一次数据,并创建一个表示每周的唯一id 我以后需要这个id,所以用户在下周打开之前不能插入另一段相同的数据 起初,我选择了DateTime。今天,但后来意识到它并不能阻止用户在下一天(或前几天)插入另一条数据 现在,我正在考虑创建一个操作过滤器,如果用户已经登录了本周的数据,并在下周一获取数据,则该过滤器将阻止用户。我需要一个函数,在周一00:00重置标志,在周四00:00升起标志(如果用户没有

我实际上是在思考时间的问题。我希望允许用户每周在周一到周三(周一00:00到周三23:59)之间只输入一次数据,并创建一个表示每周的唯一id

我以后需要这个id,所以用户在下周打开之前不能插入另一段相同的数据

起初,我选择了DateTime。今天,但后来意识到它并不能阻止用户在下一天(或前几天)插入另一条数据

现在,我正在考虑创建一个操作过滤器,如果用户已经登录了本周的数据,并在下周一获取数据,则该过滤器将阻止用户。我需要一个函数,在周一00:00重置标志,在周四00:00升起标志(如果用户没有签署数据),atm似乎需要很多时间控制工作(这就是为什么我第一次使用唯一id),并设置开/关操作过滤器(我不知道这是否真的可能或如何做到)

我认为这是一条不好的道路,这意味着可能有另一种方式来实现我的目标。或者甚至可能已经有了某种解决方案。这就是为什么我在这里问你,希望能得到灵感

谢谢

编辑:

以上所有内容都将raport_id作为唯一id

数据库类:

-拉波特

public class Raport
    {
[DatabaseGenerated(DatabaseGeneratedOption.None)]
        [Key]
        public string raport_id { get; set; } //id raportu
        public string userID { get; set; }

        public DateTime creation_time { get; set; }

        public int isMinus { get; set; }

        public DateTime last_modyfication { get; set; }


        public virtual ICollection<ThrashType> ThrashType { get; set; } 


        public virtual UserFrontInfo UserFrontInfo { get; set; }       
    }
正在创建raport_id:

            var datePart = DateTime.Today.ToString().Replace(".", "").Replace(":","").Replace(" ","");
            var namePart = User.Identity.Name.ToString();

            var nameShort = namePart.Remove((namePart.Length)-13, 12); 

            newRaport.raport_id = datePart + nameShort;

一些表示数据库的具体类将真正有助于说明您的问题

您如何实现最终解决方案,无论是操作过滤器、操作方法中的检查还是其他任何地方,都不重要

当用户每周可以输入一次数据时,只需将周数与数据一起存储,当他们尝试输入更多数据时,请检查给定周数的数据是否已经存在


有关获取给定日期的周数的实现,请参阅。

一些表示数据库的具体类确实有助于说明您的问题

您如何实现最终解决方案,无论是操作过滤器、操作方法中的检查还是其他任何地方,都不重要

当用户每周可以输入一次数据时,只需将周数与数据一起存储,当他们尝试输入更多数据时,请检查给定周数的数据是否已经存在


有关获取给定日期的周数的实现,请参阅。

您似乎在为自己扭转问题。从你的文字中,我了解到:

您希望防止用户每周向表中添加行超过一次

你可以:

检查你的新行也很容易,看看那一周是否还有其他行

i、 e:如果你使用sqlserver(t-sql),你会有这样的东西

SELECT DATEPART(wk, GETDATE())
这非常重要:

不要为这样的事情设置标志。只要检查一下你的表格,看看那个人在那个星期是否有一行,你就可以走了


如果您关心的是性能,那么通过添加一个标志,您将执行与调用数据库相同的过程,请相信我,这不是一个需要实现作业的场景,而且…

您似乎在为自己扭转问题。从你的文字中,我了解到:

您希望防止用户每周向表中添加行超过一次

你可以:

检查你的新行也很容易,看看那一周是否还有其他行

i、 e:如果你使用sqlserver(t-sql),你会有这样的东西

SELECT DATEPART(wk, GETDATE())
这非常重要:

不要为这样的事情设置标志。只要检查一下你的表格,看看那个人在那个星期是否有一行,你就可以走了


如果您关心的是性能,那么通过添加一个标志,您将执行与调用数据库相同的过程,请相信我,这不是一个需要执行作业的场景,并且…

如果您使用
DateTime.Today
,那么使用该值获取您使用
DateTime.Today
,一周的相关天数就足够容易了,然后,使用该值获取一周中相关的天数就足够容易了
SELECT DATEPART(wk, GETDATE())