2014-10-05 43 views
1

在我的前端,我有一个HTML输入框,用户可以在其中输入日期。这将数据添加到我的AngularJS模式,然后我尝试将它作为JSON对象发送到服务器,当用户单击保存。如何从我的前端(Angular)将日期发送到C#.net datetime(webAPI)?

在服务器上,我使用了这个我认为修改日期的方式。我所知道的是它允许AngularJS很好地阅读来自后端的日期。

 config.SuppressDefaultHostAuthentication(); 
     config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 
     config.Formatters.Remove(config.Formatters.XmlFormatter); 
     var json = config.Formatters.JsonFormatter; 
     json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
     json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; 
     json.SerializerSettings.Converters.Add(new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-ddTHH:mmZ" }); 

没有人有任何想法如何,我可以采取日订立的格式,如YYYY-MM-DD,modify in some way输入框,然后把它传递给服务器并让服务器读取它作为约会时间?

我的问题是我不知道如何修改YYYY-MM-DD日期。当我尝试输入诸如“2011-12-31”之类的日期时,它不会被服务器接受,并且它应该输入的列显示日期的空值。

+0

您应该添加一个具有DateTime参数的方法的webapi控制器。然后GET或POST到该方法。这很简单。还是你有其他问题?你没有说如果你尝试过它,它没有或没有工作......把日期作为文本并自己解析它总是一个选项... – Will 2014-10-05 15:07:51

+0

我有一个webapi控制器,它接受一个JSON对象,然后发布给它。我一直在尝试很久。问题是日期在我的JSON字符串中的表单看起来不符合web api的需要。 – 2014-10-05 15:12:49

+0

例外?你在这里有点含糊 - “似乎不符合web api的需求” - 怎么样?发生什么事? – Will 2014-10-05 15:20:22

回答

0

你有没有试过创建IsoDateTimeConverter的子类?试试这个:

public class MyJsonDateTimeConverter : IsoDateTimeConverter 
{ 
    public MyJsonDateTimeConverter() 
    { 
     base.DateTimeFormat = "yyyy-MM-dd"; 
    } 
} 

然后到位的最后一行的使用它:

json.SerializerSettings.Converters.Add(new MyJsonDateTimeConverter()); 

希望这有助于:)

0

没有人有任何想法如何,我可以采取日期以YYYY-MM-DD的格式输入到输入框中,以某种方式修改,然后将其传递给服务器并让服务器将其作为日期时间读取?

你为什么不使用角度UI团队的date picker component

我的问题是,我不知道我怎么能修改YYYY-MM-DD日期。当我尝试输入诸如“2011-12-31”之类的日期时,它不会被服务器接受,并且它应该输入的列显示日期的空值。

YYYY-MM-DD在你的服务器端接受的日期格式?然后,您可以将客户端上的现有日期格式转换为此格式,然后将其发布到服务器。检查您的网络标签以查看发布的值。

希望这会有所帮助。

0

尝试使用DateTime.ParseExact如果你知道的格式,或者只是DateTime.Parse如果你不这样做:

DateTime dt = DateTime.ParseExact("2011/12/31", "yyyy/d/MM", new CultureInfo("en-US")); 


DateTime.Parse("2011/12/31", new CultureInfo("en-US")); 

但是,如果从UI来的日期有这样的格式:YYYY-MM- DD然后尝试以下内容:

DateTime dt; 
DateTime.TryParseExact(dateTime, 
         "yyyy-MM-dd hh:mm tt", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out dt); 
相关问题