如何将list <string>转换为javascript数组?

时间:2015-08-13 16:43:13

标签: javascript arrays json asp.net-mvc-4 datepicker

大家晚上好,

我知道这个问题已经过时了,但我无法用其他问题来解决这个问题:How do I convert a C# List<string[]> to a Javascript array?。我对此很陌生。

我想在我的javascript中使用该数组,以显示日期是事件的日期选择器。我的脚本(datepicker.js):

$(document).ready(function() {
    var array = []; //array that should be filled with dates like this ["29-09-2015", "..."]
    $("#datepicker").datepicker({
        numberOfMonths: 3,
        beforeShowDay: function (date) {
            if ($.inArray($.datepicker.formatDate('yy-mm-dd', date), array) > -1) {
                return [false, "", " no"];
            }
            else {
                return [true, "", "yes"];
            }
        }
    });
});

我的控制器看起来像这样:

public ActionResult Index(int EID = 0, int CID = 0, int IID= 0)
{
   var dates = db.Histories.Where(p => p.SiteId == EID && p.CId == CID && p.IId == IID).Select(p => SqlFunctions.StringConvert((double)
            SqlFunctions.DatePart("m", p.Date)).Trim() + "-" +
            SqlFunctions.DateName("dd", p.Date) + "-" +
            SqlFunctions.DateName("yyyy", p.Date));
    dates = dates.OrderBy(u => u.Length);

    int datescount = dates.Count();
    List<string> sList = new List<string>();
    for(int i =0; i<datescount; i++)
    {
        sList.Add(dates.Skip(i).First());
    }

    return View();
}

在控制器中,列表sList包含我想要显示为事件的日期。

在视图中,我已经可以看到的datepicker将被调用如下:

Date: <div id="datepicker"></div>

所以现在我想将列表发送到脚本并将其转换为数组。 你能解释一下怎么做吗?

在另一页上,我不明白Romoku的意思:

//View.cshtml
  <script type="text/javascript">
var arrayOfArrays = JSON.parse('@Html.Raw(Model.Addresses)');

如果我使用json,是否必须将列表传输到模型? ID是什么?如何将它们转移到json方法?

2 个答案:

答案 0 :(得分:0)

JSON 有效的Javascript。您只需要将序列化的JSON作为普通的Javascript表达式发出:

var arrayOfArrays = @Html.Raw(your JSON);

答案 1 :(得分:0)

在您的控制器中将列表作为模型返回到您的视图

{
    /// code ..
    return View(sList);
}

并且您的View试试这个

@model List<string>

@{
   string jsonObject = Newtonsoft.Json.JsonConvert.SerializeObject(Model);
}

<script type="text/javascript">
var array = @Html.Raw(jsonObject)
$(document).ready(function() {
    $("#datepicker").datepicker({
        numberOfMonths: 3,
        beforeShowDay: function (date) {
            if ($.inArray($.datepicker.formatDate('yy-mm-dd', date), array) > -1) {
                return [false, "", " no"];
            }
            else {
                return [true, "", "yes"];
            }
        }
    });
});
</script>