0

我有 2 个简单的 xml 文件来向网站 MVC4 提供新闻报道。我有一个英语和一个格鲁吉亚语

例子

<ITEM id="7" Title="English"
    Content="English Content"
    dt ="02/11/2013">
</ITEM>

<ITEM id="7" Title="ქართული"
    Content="ქართული შინაარსი"
    dt ="02/11/2013">
</ITEM>

我创建了一个模型来将数据放入并注意我在这里设置了日期格式:

public class NewsModel
{
    public Int32 id { get; set; }
    public String Title { get; set; }
    public String Content { get; set; }
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime DT { get; set; }
}

我有一个 ViewModel,它提供了一个列表并确定我需要哪种语言:

public NewsListModel()
    {
        try
        {
            String cultureStr = HttpContext.Current.Session["Culture"].ToString();

            if (cultureStr == "en-GB" || cultureStr == "en-US")
            {
                xmlurl = "http://localhost:1703/News/NewsENG.xml";
            }
            else
            {
                xmlurl = "http://localhost:1703/News/NewsGEO.xml";
            }
        }
        catch
        {
            xmlurl = "http://localhost:1703/News/NewsGEO.xml";
        }

        _newslist = new ObservableCollection<NewsModel>();

        XmlDocument doc = new XmlDocument();
        doc.Load(xmlurl);

        XmlNode ItemListNode = doc.SelectSingleNode("ITEMS");
        XmlNodeList ItemNodes = ItemListNode.SelectNodes("ITEM");

        foreach (XmlNode i in ItemNodes)
        {
            NewsModel n = new NewsModel();
            n.id = Convert.ToInt32(i.Attributes.GetNamedItem("id").Value);
            n.Title = i.Attributes.GetNamedItem("Title").Value.ToString();
            n.Content = i.Attributes.GetNamedItem("Content").Value.ToString();
            n.DT = Convert.ToDateTime(i.Attributes.GetNamedItem("dt").Value);
            _newslist.Add(n);
        }
    }

然后我在页面中显示:

@itm.DT.Date.ToShortDateString()

我的问题是我的日期格式因使用的语言而异,即

在此处输入图像描述 在此处输入图像描述

删除 .ToShortDateString() 具有相同的分隔符问题并显示时间。

我已经看过很多次了。我似乎对每个文件都做同样的事情。有没有人有类似的经历和/或解决方案,以便两种日期格式以“/”作为分隔符显示相同。

先感谢您。

4

2 回答 2

0

试试这个(假设你的模型有Itemstype 的属性IEnumerable<NewsModel>):

@Html.DisplayFor(model => model.Items[index].DT) // index from a for loop

当您直接编写时,您的DisplayFormatAttributeon会被忽略DT@itm.DT

于 2013-11-12T09:55:58.903 回答
0

您可以简单地将所需的文化或格式添加到您的模型中(添加到模型的根目录,而不是添加到列表的每个元素)。

然后,只需在您的视图中使用文化或格式,如下所示:

  @itm.DT.Date.ToShortDateString(/* here the format/culture*/ Model.Culture)

这样你就不用依赖任何魔法了...

如果您希望列表中的 echa 项目具有不同的格式,请将格式文化添加到每个元素。

当你不能自动得到它时......要明确。

于 2013-11-12T09:53:01.503 回答