C# 为用户输入数据设置时间界限的最佳方法是什么?(asp.net mvc)
我实际上是在思考时间的问题。我希望允许用户每周在周一到周三(周一00:00到周三23:59)之间只输入一次数据,并创建一个表示每周的唯一id 我以后需要这个id,所以用户在下周打开之前不能插入另一段相同的数据 起初,我选择了DateTime。今天,但后来意识到它并不能阻止用户在下一天(或前几天)插入另一条数据 现在,我正在考虑创建一个操作过滤器,如果用户已经登录了本周的数据,并在下周一获取数据,则该过滤器将阻止用户。我需要一个函数,在周一00:00重置标志,在周四00:00升起标志(如果用户没有签署数据),atm似乎需要很多时间控制工作(这就是为什么我第一次使用唯一id),并设置开/关操作过滤器(我不知道这是否真的可能或如何做到) 我认为这是一条不好的道路,这意味着可能有另一种方式来实现我的目标。或者甚至可能已经有了某种解决方案。这就是为什么我在这里问你,希望能得到灵感 谢谢 编辑: 以上所有内容都将raport_id作为唯一id 数据库类: -拉波特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升起标志(如果用户没有
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())