C# Rest API returns 带双引号的字符串

C# Rest API returns string with double quotes

我有这个愚蠢的问题,希望有人能帮我开导。 我正在为 Umbraco7 的后台构建一个扩展,因为我需要接收一个简单的字符串。我的问题是来自 REST api 的字符串 return 包含双引号,然后 AngularJS 不会绑定模型。这是我的 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>

使用substring

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

我从@ArghyaC 的评论表中找到了@basarat 建议的另一种方法。问题在于 Umbraco 的 REST 控制器建立在 asp.net 的 ControllerApi 之上,并且默认为 xml。撇号来自 xml 序列化。解决方案是简单地强制 json 作为 return 值。我不敢全局更改此设置,但可以使用 JsonResult return 值强制方法 return:

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

这也解决了问题,但没有在客户端中执行任何操作。