2014-10-05 42 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); 
相關問題