【问题标题】:ASP.NET DateTime Column in Database Getting Set to Current Date on Page Load数据库中的 ASP.NET DateTime 列在页面加载时设置为当前日期
【发布时间】:2017-11-22 00:10:10
【问题描述】:

我正在尝试解决在导航到 ASP.NET 站点中的页面时设置数据库列的问题。这是一个报价管理网络应用程序,当打开报价并导航到某个页面时,“到期日期”会自动更新为当前日期。我已经验证这是在触发 ascx.cs 文件中的 Page_Load 函数之前发生的。在此之前,我曾尝试追踪正在运行的内容,但恐怕我对 ASP.NET 的了解不够,而且我不知道该去哪里寻找。从我可以看出之前运行的部分(例如,aspx.cs 文件)中,我看不到任何迹象表明记录有任何更改。

当我深入挖掘时,似乎在编辑报价时离开主登录页面时变化正在发生变化。如果我更新值并转到除主页之外的任何报价页面,它保持不变。我可以前往主页,查看数据库中的记录,它保持不变。但似乎一旦我从该主页导航,到期日期就会更改为当前日期。有什么地方我可以检查一下是否发生了这种情况?

-- 编辑--

也许详细的操作列表可能会有所帮助...

  1. 查看系统报价列表
  2. 点击“编辑”链接获取报价
  3. 查看“报价详情”页面,这是编辑访问时的第一页
  4. 查看数据库查询以获取报价以查看 exp 日期是否仍然正确 价值
  5. 点击“报价选项”导航链接
  6. 查看“报价选项”中的到期日期现已更改为当前 日期
  7. 检查数据库查询以查看未执行已知保存到 数据库中 exp 日期值已更新的数据库
  8. 执行更新报价以重置到期日期
  9. 在报价编辑中查看任何其他页面,返回“选项”,参见 exp 日期未再次从重置值更改
  10. 使用数据库查询验证正确的日期
  11. 重新访问“详细信息”页面
  12. 再次使用数据库查询验证正确的日期
  13. 前往任何其他页面,然后前往“选项”,或直接前往 到“选项”,看到exp日期已经变成了当前日期

这是所用链接上的 HTML,在其他页面上似乎相同...

<a class="tabOff" id="ContentPlaceHolder1_linkButtonAddEditShipping" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ctl00$ContentPlaceHolder1$linkButtonAddEditShipping", "", true, "", "", false, true))'>Quote Options</a>

【问题讨论】:

  • 我猜你的问题是当你提交报价页面时重新加载并再次执行代码(整个页面加载部分)尝试将日期设置代码放入 if(!isPostBack){}跨度>
  • 就是这样,没有提交任何内容。您可以访问编辑报价的输入页面,然后导航到另一个页面来编辑报价,并且值已更改。但是,如果您在该页面上提交更改以放回值并导航到报价的任何页面而不转到主页,则该值不会更改。没有提交导致更改的表单,并且值已经更改,然后您可以测试 if (!IsPostBack())
  • 如果没有看到问题的示例,任何人都无法帮助您。请阅读帮助中心的How to create a Minimal, Complete, and Verifiable exampleHow do I ask a good question?。谢谢。

标签: asp.net sql-server datetime


【解决方案1】:

我解决了这个问题。有点。我确实发现在离开“详细信息”页面时会触发保存功能,即使没有明确激活保存操作。通过在函数开始时从数据库中获取过期日期来解决问题,如果设置了过期日期,则在函数的最后将该值推回。虽然这实际上阻止了该值被“覆盖”,但我仍然无法确定触发保存功能的原因,也无法确定该函数中的哪些操作将值设置为当前日期

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 2016-12-26
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2018-11-28
    相关资源
    最近更新 更多