Angularjs - 在表上设置默认日期?

时间:2015-01-26 12:36:06

标签: c# html angularjs

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数据类型转换为日期时间数据类型会导致超出范围的值。\ r \ n语句已终止。”}

1 个答案:

答案 0 :(得分:0)

您应该检查您的请求(使用您最喜爱的浏览器中的fiddler或网络标签,以查看发布的数据)。也就是说,在HTML中,您的输入元素缺少name属性。您应该添加:

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

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

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

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