首页 > 解决方案 > C# 将列表从 json 传递到 viev,并显示在一个文本框中

问题描述

在我的代码中,我想在 Json 列表中返回三个日期。

与此类似的东西:

DateTime? localDate = DateTime.Now;
        
        
        DateTime?[] dateTimes = new DateTime?[]
        {
            localDate,
            localDate,
            localDate
        };

        return Json(dateTimes);

我想在文本框中的视图中显示这些数据,如果这个日期用逗号分隔,那就太好了。我只知道如何在 c# 中执行此操作,并且只传递一个字符串,但我的代码太多。也许是另一种更好的方法来做到这一点。

标签: c#model-view-controllerview

解决方案


不确定您的Json()方法在做什么以及为什么不只是使用:

JsonConvert.SerializeObject();

但是要将您的 3 个日期数组转换为 Json 字符串,您只需执行以下操作:

var json = JsonConvert.SerializeObject(dateTimes, Formatting.Indented);

这将导致以下字符串:

[
  "2021-09-27T10:11:11.7616692+00:00",
  "2021-09-27T10:11:11.7616692+00:00",
  "2021-09-27T10:11:11.7616692+00:00"
]

或者...

如果您只想将 3 个日期放入以逗号分隔的字符串中,您可以执行以下操作:

var datesString = string.Empty;

dateTimes.ToList().ForEach(date => {
datesString += $"{date},";
});

dateString = dateString.Remove(dateString.LastIndexOf(","));

这将导致类似:9/27/2021 10:14:17 AM,9/27/2021 10:14:17 AM,9/27/2021 10:14:17 AM


passing返回视图而言,您应该Binding在文本框上使用,例如:

<TextBox Text={Binding DatesString, Mode=OneWay}/>

然后在您的 ViewModel 中,将属性的值更改为DatesString前面提到的代码的结果。

您的DatesString财产看起来像这样:

private string _datesString;

public string DatesString
{
   get => this._datesString;
   set => 
   {
       this._datesString = value;
       this.PropertyChanged(ref _datesString, value); //// Your NotifyPropertyChanged Event
   }
}

推荐阅读