【问题标题】:Jquery datepicker - Pass date array from Controller MVCJquery datepicker - 从控制器 MVC 传递日期数组
【发布时间】:2017-03-22 04:23:04
【问题描述】:

我创建了一个包含可用日期的列表并将其序列化为 json:

List<string> dates = new List<string>();   

foreach(BookingDates itm in model.availableDates)
{
    dates.Add(itm.expDate.ToString("dd-MM-yyyy"));
}

model.datesStr = new JavaScriptSerializer().Serialize(dates); 

然后我将模型数据传递给 jquery 并尝试将日期传递给 datepicker:

var availableDates = @Html.Raw(Json.Encode(@Model.datesStr));
alert(availableDates);

function available(date) {
    dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
    if ($.inArray(dmy, availableDates) != -1) {
        return [true, "ui-available", "Available"];
    } 
    else {
        return [false, "ui-unavailable", "unAvailable"];
    }
}

日期选择器不填充日期。 但是,如果我输入日期,它会:

var availableDates = ["20-11-2016","17-12-2016"];

我注意到的唯一区别是当按上述方式键入日期时我的警报结果是:

20-11-2016,17-12-2016

当我使用json时反对产生以下结果:

["2016 年 11 月 20 日","2016 年 17 月 12 日"]

我也尝试过将 var 声明为数组:

var availableDates = [];
availableDates = @Html.Raw(Json.Encode(@Model.datesStr));

再次没有成功实现 json。我应该以某种方式将我的 json 转换为用逗号分隔的字符串吗?

【问题讨论】:

    标签: jquery json asp.net-mvc datepicker


    【解决方案1】:

    JavaScriptSerializer().Serialize 方法会将您的列表转换为字符串。如果您想要一个用于客户端代码的 javascript 数组,您应该将视图模型属性从字符串更改为集合(数组/列表)。

    public class YourViewModel
    {
      public List<string> Dates { set;get;}
      //Other properties 
    }
    

    在你的行动方法中,

    foreach(BookingDates itm in model.availableDates)
    {
        vm.Dates.Add(itm.expDate.ToString("dd-MM-yyyy"));
    }
    return View(vm);
    

    现在在剃刀视图中,

    @model YourViewModel
    <script>
       var availableDates = @Html.Raw(Newtonsoft.JsonJsonConvert
                                                .SerializeObject(Model.Dates))
       console.log(availableDates);
    </script>
    

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2018-03-31
      相关资源
      最近更新 更多