2015-06-12 61 views
3

我有這個愚蠢的問題,我希望有人能幫助我開導。 我正在爲Umbraco7的後臺建立一個擴展,因爲我需要接收一個簡單的字符串。我的問題是從REST API返回的字符串包含雙引號,然後AngularJS不會模型綁定。這裏是我的API方法:C#Rest API返回帶雙引號的字符串

public String GetWeek() 
{ 
     var datetime = DateTime.Now; 
     var cultureInfo = new CultureInfo("da-DK"); 
     var calendar = cultureInfo.Calendar; 

     var week = calendar.GetWeekOfYear(datetime, cultureInfo.DateTimeFormat.CalendarWeekRule, cultureInfo.DateTimeFormat.FirstDayOfWeek); 
     return datetime.Year + "-W" + week; 
} 

如果有人能解釋一下,我是如何擺脫這些雙引號的,我將非常感激:)

結果:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">"2015-W24"</string> 
+0

謝謝編輯:) – DNRN

+2

由於您使用js的服務,爲什麼不返回json。只是一個意見。 (這不會解決你的問題,但)。你是如何創建REST API的?例如Web Api不會放置引號。 –

+0

我正在使用Umbraco7的UmbracoApiController。 – DNRN

回答

0

我發現了@ basarat建議的另一種方式,來自評論表單@ArghyaC。問題是Umbraco的REST控制器建立在asp.net的ControllerApi上,默認爲xml。撇號來自xml序列化。該解決方案是簡單的強制json作爲返回值。我不敢在全球範圍內改變這一狀況,但可以強制的方法與JsonResult返回值返回:

public JsonResult GetWeek() 
    { 
     var datetime = DateTime.Now; 
     var cultureInfo = new CultureInfo("da-DK"); 
     var calendar = cultureInfo.Calendar; 

     var week = calendar.GetWeekOfYear(datetime, cultureInfo.DateTimeFormat.CalendarWeekRule, cultureInfo.DateTimeFormat.FirstDayOfWeek); 
     var weekString = datetime.Year + "-W" + week; 

     var result = new JsonResult {Data = weekString}; 
     return result; 
    } 

這也解決了這個問題,但沒有在客戶端做任何事情。

+0

很好,它解決了。作爲一個方面說明,我在我的網絡API配置config.Formatters.JsonFormatter.MediaTypeMappings.Add(新的QueryStringMapping(「格式」,「JSON」,「應用程序/ JSON」)); - 所以對於任何api調用,如果添加查詢字符串?format = json,它將返回json :)感謝一個偉大的SO回答。希望你可以使用類似的東西。 –

0

使用substring

var foo = '"2015-W24"'; 
console.log(foo.substring(1, foo.length - 1)); // 2015-W24 
+0

是的,這是一個解決方案。但我希望我能以某種方式馴服控制器呢? – DNRN