如何在 Razor 中从模型中读取 xml 字符串
本文关键字:读取 xml 字符串 模型 Razor | 更新日期: 2023-09-27 18:34:00
我有一个现有的.net应用程序在razor中呈现数据,我想使用razor为每条记录显示XML字符串中的特定节点。 但我不确定如何写它。 模型中将有 50+ 条记录,所以我想确保它是有效的。
模型中的每个记录都有自己的 xmldata。 例如:
型:
namespace Project.Web.ViewModels
{
public class SampleModel
{
public int id { get; set; }
public string xmldata { get; set; }
}
}
第一条记录的 XMLDATA :
<content>
<user>
<firstname>Jim</firstname>
<lastname>Smith</lastname>
</user>
</content>
第二条记录的 XMLDATA :
<content>
<user>
<firstname>John</firstname>
<lastname>Jones</lastname>
</user>
</content>
csHtml:
@model Project.Web.ViewModels.SampleModel
@foreach (item in Model) {
<p><b>ID:</b> @item.id</p>
<p><b>FirstName:</b> //Add firstname from @item.xmldata here</p>
<p><b>LastName:</b> //Add lastname from @item.xmldata here</p>
<br>
}
期望输出:
ID: 1
FirstName: Jim
LastName: Smith
ID: 2
FirstName: John
LastName: Jones
有关如何在 cshtml 中编写剃刀代码的示例将不胜感激!
这种方法怎么样:
using System.Xml.Linq;
public class SampleModel
{
private XDocument document;
public int Id {get;set;}
public string FirstName
{
get { return document.Descendants("firstname").Single().Value; }
}
// other properties in the same manner
// Dynamic
public string GetData(string fieldName)
{
return document.Descendants(fieldname).Single().Value;
}
public SampleModel(){}
public SampleModel(int id, string xml)
{
this.Id = id;
this.document = XDocument.Parse(xml);
}
}
并在视图中
@model IEnumerable<Project.Web.ViewModels.SampleModel>
@foreach (item in Model) {
<p><b>ID:</b> @item.id</p>
<p><b>FirstName:</b> @item.GetData("firstname")</p>
<p><b>LastName:</b> @item.GetData("lastname")</p>
<br>
}