【问题标题】:Angularjs - save defaulf date on a table?Angularjs - 在表格上保存默认日期?
【发布时间】:2015-03-24 20:57:48
【问题描述】:

html

  <input type="text" class="form-control" ng-model="ModifiedDate" id="ModifiedDate">

app.js

  $scope.ModifiedDate = $filter("date")(Date.now(), 'dd-MM-yyyy');

型号

   public System.DateTime ModifiedDate { get; set; }

控制器

     public IHttpActionResult PostPerson1(UserVM vm)
    {
        var pers = new Person1
        {

            Title = vm.Title,
            FirstName = vm.FirstName,
            LastName = vm.LastName,
            UserName = vm.UserName,
            EmailPromotion = vm.EmailPromotion,

            SMSPromotion = vm.SMSPromotion,
            Telephone = vm.Telephone,
            Extension = vm.Extension,
            Mobile = vm.Mobile,
            Email = vm.Email,
            Email2 = vm.Email2,
            ModifiedDate = (DateTime) vm.ModifiedDate,
            UserAuthRoleId = vm.UserAuthRoleId
        };

        var word = new Password();
        using (var context = new VybeEstoreEntities1())
        {

            context.People1.Add(pers);

           // word.PersonID = pers.PersonID;              
            word.ModifiedDate = pers.ModifiedDate;
            word.Password1 = vm.Password1;
            word.rowguid = vm.rowguid;
            context.Passwords.Add(word);

            context.SaveChanges();

当我想保存默认日期时,我发现我的 C# 代码出现错误,请提供任何帮助。

错误:

{"将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。\r\n语句已终止。"}

【问题讨论】:

  • 如果在保存前调试,ModifiedDate的值是多少?我猜是DateTime.MinValue?
  • @mattytommo 保存前调试是什么意思?
  • 在 Visual Studio 中调试,在 db.SaveChanges 行之前放置一个断点并检查监视窗口以查看 person1.ModifiedDate 的值是什么
  • 我做到了,它的 01-jan-01
  • ModifiedDate = {01-Jan-01 12:00:00 AM}

标签: c# html angularjs


【解决方案1】:

您应该检查您的请求(使用 fiddler 或仅使用您喜欢的浏览器中的网络选项卡来查看发布了哪些数据)。也就是说,在您的 HTML 中,您的 input 元素似乎缺少 name 属性。您应该添加:

<input type="text" class="form-control" ng-model="ModifiedDate"
id="ModifiedDate" name="ModifiedDate">

您的操作方法将 Person1 作为参数。它需要一个名为 ModifiedDate 的属性,以便 MVC 解析请求中发送的 ModifiedDate。发送的 ModifiedDate (由您!)格式化为 dd-MM-yyyy 格式。根据您的 asp.net 应用程序中的语言环境/文化信息,此格式可能会被错误地解析为 MM-dd-yyyy。您可以通过将日期设置为即使交换日期和月份也可以解析的日期来进行测试。您可以尝试 2015 年 10 月 10 日,看看是否可行。如果是这种情况,您可以尝试将 CurrentCultureInfo 设置为您希望接受 dd-MM-yyyy 的任何文化信息。可能是欧洲文化资料。

Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK"); // Danish

有更优雅的方式来设置当前文化,但似乎你现在正在调试......

【讨论】:

  • 即使我添加了名称,它也不会保存到我的数据库中。
  • 这是我的错误:{“将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。\r\n语句已终止。” }
  • 您可以使用网络选项卡检查您的请求吗?我建议使用 chrome 或 firefox。在您的请求中,您看到 ModifiedDate 了吗?在您的控制器中添加一个断点并检查您的 person1 - 是否在该对象上设置了 ModifiedDate?也许 mvc 的模型绑定器无法解析您的 ModifiedDate - 您的格式可能是错误的。
  • 这是我插入断点时从 person1 ModifiedDate = {01-Jan-01 12:00:00 AM} 得到的结果
  • 是的,我确实在 ma 文本框中看到了当前日期,我的问题在保存时开始
猜你喜欢
  • 2020-07-16
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多