我有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>
我创建了一个模型来放入数据,NB我在这里设置了一个日期格式:
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()具有相同的分隔符问题并显示时间。
我现在已经看过这么多次了。我似乎对每个文件做了同样的事情。有没有人有类似的经验和/或分辨率,以便两个日期格式显示相同的“/”作为分隔符。
提前谢谢。
答案 0 :(得分:0)
您可以简单地将所需的文化或格式添加到模型中(到模型的根目录,而不是列表中的每个元素)。
然后,只需在视图中使用文化或格式,如下所示:
@itm.DT.Date.ToShortDateString(/* here the format/culture*/ Model.Culture)
通过这种方式,你不依赖任何魔法......
如果您希望列表中的echa项使用不同的格式,请将格式文化添加到每个元素。
当你无法自动获得它时......要明确。
答案 1 :(得分:0)
请尝试此操作(假设您的模型具有Items
类型的IEnumerable<NewsModel>
属性:
@Html.DisplayFor(model => model.Items[index].DT) // index from a for loop
直接撰写DisplayFormatAttribute
DT
@itm.DT
会被忽略