gpt4 book ai didi

c# - 将 xml 绑定(bind)到模型类

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:01 25 4
gpt4 key购买 nike

我正在尝试使用 xml 作为小型 CMS 的数据库,例如画廊或员工资料等等

然而,由于所有亚音速思维,我都坚持如何将我的 xml 文档绑定(bind)到模型类这样我就可以将该类用于强类型 View :

这是我的模型类:

[XmlRoot("employee")]
public class EmployeesModel
{
[Required]
[DisplayName("Name: ")]
[XmlElement("employeeName")]
public string employeeName { get; set; }

[Required]
[DisplayName("Position: ")]
[XmlElement("employeePosition")]
public string employeePosition { get; set; }

[Required]
[DisplayName("Description")]
[XmlElement("employeeDescription")]
public string employeeDescription { get; set; }

[Required]
[DisplayName("Photo: ")]
[XmlElement("employeePhoto")]
public string employeePhoto { get; set; }

[Required]
[DisplayName("ID: ")]
[XmlElement("employeeID")]
public int employeeID { get; set; }
}

这是我的代码:

XDocument xmlDoc = XDocument.Load(Server.MapPath("~/App_Data/employees.xml"));

var model = (from xml in xmlDoc.Descendants("employee")
select xml) as IEnumerable<EmployeesModel>;

return View(model);

XML

<?xml version="1.0" encoding="utf-8" ?>
<employees>
<employee>
<employeeName>David parker</employeeName>
<employeePosition>Senior Web Developer</employeePosition>
<employeeDescription>This is a test description<br>feele free to add something here.</employeeDescription>
<employeePhoto>mypic.jpg</employeePhoto>
<employeeID>1</employeeID></employee></employees>

xml 方面的工作,但模型始终为空,但是我在尝试绑定(bind)时没有遇到运行时错误,我知道我应该在这里做更多的事情,但我需要一些帮助。

为清楚起见,我使用的是 asp.net mvc 2 rc 2

谢谢

最佳答案

您需要将 XML反序列化为对象。您不能简单地将 XML 转换为对象。当你说 as IEnumerable<EmployeesModel> ,你会得到一个 null因为类型不兼容。您的代码可能如下所示:

var serializer = new XmlSerializer(typeof(EmployeesModel));
var model =
from xml in xmlDoc.Descendants("employee")
select serializer.Deserialize(xml.CreateReader()) as EmployeesModel;

您可以考虑的另一个选择是投影 XElement s 到 EmployeesModel 对象中,如下所示:

var model =
from xml in xmlDoc.Descendants("employee")
select new EmployeesModel {
employeeName = (string)xml.Element("employeeName"),
employeePosition = (string)xml.Element("employeePosition"),
employeeDescription = (string)xml.Element("employeeDescription"),
employeePhoto = (string)xml.Element("employeePhoto"),
employeeID = (int)xml.Element("employeeID"), };

如您所见,这可能会变得乏味。然而,它可能是合适的。如果您的 XML 文件代表所有员工数据,但您的 View 仅显示数据的一个子集或不同结构的数据,您可能不希望您的 View 模型是数据存储内容的直接副本。

关于c# - 将 xml 绑定(bind)到模型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2214695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com