我创建了一个包含可用日期的List,并将其序列化为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时,反对导致以下结果:
[&#34; 20-11-2016&#34;&#34; 17-12-2016&#34;]
我也尝试将var声明为数组:
var availableDates = [];
availableDates = @Html.Raw(Json.Encode(@Model.datesStr));
再次没有成功实现json。我应该以某种方式将我的json转换为用逗号分隔的字符串吗?
答案 0 :(得分:2)
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>