我是asp.net MVC的新手。我正在使用一些XML Web服务,需要创建一个Web应用程序来与它们进行交互。
Web应用程序将包含一个包含所有工具ID和描述的表格,当表格中的某个工具被点击时,该表格将使用工具的信息填充表单。
通常从// localhost / dbservices / tool / id访问Web服务。 每个页面都包含与指定工具的id相对应的XML。
我很困惑如何使用MVC开始这个项目。 我从未使用过不在本地数据库中的模型数据。
我如何将XML数据分配给模型并在控制器中访问它然后将其传递给视图?
这是我正在尝试的一些代码。我制作了一个类似于过去的Web表单应用程序。在这里,我试图将所有工具的列表传递给控制器。我从中获取了一些代码,并尝试将其实现到我的MVC应用程序中。我想知道我是否走在正确的道路上。还包括我的模型视图和工具控制器。
public ActionResult Component()
{
string rt;
WebRequest request =
WebRequest.Create("http://localhost/DbService/Tool");
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
rt = reader.ReadToEnd();
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(rt);
XmlNodeList nodeList = xmldoc.GetElementsByTagName("Tool");
List<Tool> ToolIdList = new List<Tool>();
Tool[] toolArray = new Tool[3];
List<string> toolList = new List<string>();
foreach (XmlNode node in nodeList)
{
toolList.Add(node.InnerText);
}
foreach (Tool tool in ToolIdList)
{
foreach (var toolId in toolList)
{
tool.ToolId = toolId;
}
}
return View(ToolIdList);
}
工具模型:
public class Tool
{
public int Id { get; set; }
public string ToolId { get; set; }
public string Adapter { get; set; }
public int TNumber { get; set; }
public List<string> ComponentList { get; set; }
public List<string> AccessoryList { get; set; }
}
查看:
@model IEnumerable<Project.Models.Tool>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.ToolId)
}
答案 0 :(得分:0)
我可以向您推荐XmlSerializer类。它有一个反序列化方法,它基本上将你的xml解压缩到一个对象(这会给你的代码带来困难)
反序列化程序文档: https://msdn.microsoft.com/en-us/library/tz8csy73(v=vs.110).aspx
设置和使用示例: https://www.codeproject.com/Articles/487571/XML-Serialization-and-Deserialization-Part-2
此外,将控制器外部的Web调用解压缩为辅助方法。您的网络电话现在无法重复使用,如果您需要通过网站上的任何其他控制器方法调用该服务,您将被迫编写重复的代码。