【发布时间】:2016-09-14 09:51:22
【问题描述】:
我实际上是在思考时间问题。我希望允许用户在每周一至周三(周一 00:00 至周三 23:59)之间输入数据一次,并创建一个代表每周的唯一 ID。
我稍后需要这个 id,所以用户在下周打开之前不能插入另一条相同的数据。
起初,我选择了 DateTime.Today,但后来意识到它不会阻止用户在下一天(或另一天)插入另一条数据。
现在我正在考虑创建一个操作过滤器,如果用户已经登录了本周的数据并在下周一接收它,则该过滤器将阻止用户。我需要一个在星期一 00:00 重置标志并在星期四 00:00 升旗(如果用户尚未登录数据)的功能,这似乎需要大量时间控制工作(这就是我选择的原因唯一 id 1st)并设置打开/关闭操作过滤器(我不知道这是否真的可能或如何做到)。
我认为这是一条糟糕的道路,意味着可能有另一种方式来实现我的目标。或者甚至可能已经有了某种解决方案。这就是我在这里问你的原因,希望能得到启发。
谢谢!
编辑:
以上所有都将 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; }
}
--thrash 类型
public class ThrashType
{
[Key]
public int IdTrash { get; set; }
public string raport_id { get; set; }
public string ClassName { get; set; }
public bool isNegative { get; set; }
public int Quantity { get; set; }
public string Information { get; set; }
public virtual Raport Raport { 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;
【问题讨论】:
-
如果您使用
DateTime.Today,那么很容易使用该值来获取一周中的相关日期
标签: c# asp.net asp.net-mvc date action-filter