Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将日期从前端(Angular)发送到C#.net日期时间(webAPI)?_C#_Asp.net_.net_Json_Angularjs - Fatal编程技术网

如何将日期从前端(Angular)发送到C#.net日期时间(webAPI)?

如何将日期从前端(Angular)发送到C#.net日期时间(webAPI)?,c#,asp.net,.net,json,angularjs,C#,Asp.net,.net,Json,Angularjs,在我的前端,我有一个HTML输入框,用户可以在其中输入日期。这会将数据添加到AngularJS模式中,然后当用户单击save时,我会尝试将其作为JSON对象发送到服务器 在服务器上,我使用了它,我认为它修改了预期日期的方式。我只知道它允许AngularJS很好地读取来自后端的日期 config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAut

在我的前端,我有一个HTML输入框,用户可以在其中输入日期。这会将数据添加到AngularJS模式中,然后当用户单击save时,我会尝试将其作为JSON对象发送到服务器

在服务器上,我使用了它,我认为它修改了预期日期的方式。我只知道它允许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等格式在输入框中输入日期,
以某种方式进行修改
,然后将其传递给服务器,并让服务器将其作为日期时间读取吗


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

您是否尝试过创建IsoDateTimeConverter的子类?试试这个:

public class MyJsonDateTimeConverter : IsoDateTimeConverter
{
    public MyJsonDateTimeConverter()
    {
        base.DateTimeFormat = "yyyy-MM-dd";
    }
}
然后用它代替最后一行:

json.SerializerSettings.Converters.Add(new MyJsonDateTimeConverter());
希望这有帮助:)

有人知道我如何以YYYY-MM-DD等格式在输入框中输入日期,以某种方式进行修改,然后将其传递给服务器,并让服务器将其作为日期时间读取吗

为什么不使用angular ui团队的

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

YYYY-MM-DD
是服务器端接受的日期格式吗?然后,您可以将客户端上现有的日期格式转换为此格式,然后再将其发布到服务器。检查“网络”选项卡以查看正在发布的值


希望这能有所帮助。

如果您知道格式,请尝试使用DateTime.ParseExact,如果您不知道,请使用DateTime.ParseExact:

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);

您应该添加一个带有DateTime参数的方法的webapi控制器。然后获取或发布到该方法。很简单。还是你有其他问题?你没有说你是否尝试过,它是否有效。。。将日期作为文本输入并自己解析总是一个选项……我有一个webapi控制器,它接受JSON对象,我正在向它发布。我已经试了很久了。问题在于,我的JSON字符串中的日期形式似乎与web api所需的不匹配。异常?您在这里有点含糊不清--“似乎不符合web api的需要”--怎么会这样?发生了什么事?