ASP.NET MVC如何仅通过控制器实现页面加载时插入客户端IP、日期到数据库
解决方案
直接在GET类型的Index控制器方法中添加数据插入逻辑即可,页面加载时默认会触发GET请求,无需任何前端修改,满足全部逻辑在控制器端完成的要求。
修改后的完整代码如下:
MBG_ITEntities db = new MBG_ITEntities(); public ActionResult Index() { // 实例化访问统计对象并赋值 HitCounter obj = new HitCounter(); obj.IPAddress = Request.UserHostAddress; obj.CreateDate = DateTime.Now; // 写入数据库 db.HitCounter.Add(obj); db.SaveChanges(); return View(obj); } [HttpPost] public ActionResult Index(HitCounter obj) { DateTime time = DateTime.Now; obj.IPAddress = Request.UserHostAddress; obj.CreateDate = time; db.HitCounter.Add(obj); db.SaveChanges(); return View(obj); }
注意事项
- 如果你的业务不需要处理POST提交场景,可以直接删除
[HttpPost]修饰的Index方法,避免重复写入数据 - 若要避免同个用户短时间刷新产生多条冗余记录,可以在插入前增加校验逻辑:先查询当前IP在指定时间范围内(如10分钟)是否已经有访问记录,存在则跳过插入
- 建议使用
using语句声明数据库上下文对象,自动释放资源避免内存泄漏
内容的提问来源于stack exchange,提问作者Ahmed Hamed
相关产品推荐
相关产品推荐

