Я видел много веб-сайтов, которые показывают, как это сделать:
<ul>
@foreach (var customer in Model.Customer)
{
<li>@customer</li>
}
</ul>
То, что я пытаюсь сделать, - иметь список, который добавляет данные к нему из файла XML.
Я сделал то же самое в форме окна, чей код выглядит так:
XElement xRoot = ManagerHelper.XMLManager().LoadOrderXML();
var ordermodel = new OrderModel(xRoot).orders.List;
lstbxClientNameNo.Items.Clear();
foreach (var order in ordermodel)
{
lstbxClientNameNo.Items.Add(string.Format("{1} - {0}",
order.clientName, order.orderNumber));
}
однако кто-то может помочь мне сделать то же/подобное в проекте MVC, где я могу вытащить данные из Model in View.
Я скопировал модель в MVC из формы окна, и я хочу использовать те же данные. Причина, по которой я создаю одно и то же приложение в MVC, заключается в том, что я пытаюсь изучить MVC и как он работает.
Моя модель выглядит так:
public XElement LoadOrderXML()
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Environment.GetFolderPath(MYFORLDERPATH));
XElement xRoot = XElement.Parse(xmldoc.InnerXml);
return xRoot;
public class OrderModel
{
public Orders orders;
public OrderModel(XElement xOrder)
{
orders = new Orders(xOrder);
}
public class Order
{
public string orderNumber, clientName;
public decimal totalOrderPrice;
public Products products;
public Order()
{
}
public Order(XElement xOrder)
{
XElement xClientNumber = xOrder.Element("OrderNumber");
XElement xClientName = xOrder.Element("ClientName");
XElement xTotalOrderPrice = xOrder.Element("TotalOrderPrice");
XElement xProduct = xOrder.Element("Products");
if (xClientNumber == null) return;
orderNumber = xClientNumber.Value;
clientName = xClientName.Value;
totalOrderPrice = decimal.Parse(xTotalOrderPrice.Value);
products = new Products(xProduct);
}
public XElement ToXML()
{
var xOrder = new XElement("Order");
var xClientNumber = new XElement("OrderNumber", orderNumber);
var xClientName = new XElement("ClientName", clientName);
var xTotalOrderPrice = new XElement("TotalOrderPrice",
totalOrderPrice);
var xProducts = new XElement("Products", products);
xOrder.Add(xClientNumber);
xOrder.Add(xClientName);
xOrder.Add(xTotalOrderPrice);
xOrder.Add(xProducts);
return xOrder;
}
}
public class Orders
{
private readonly List<Order> _list;
public List<Order> List { get { return _list; } }
public Orders(XElement xAddresses)
{
_list = new List<Order>();
var xProductList = xAddresses.Descendants().ToList();
foreach (XElement ele2 in xAddresses.Descendants("Order"))
{
_list.Add(new Order(ele2));
}
}
}
Основываясь на ваших комментариях и коде, я думаю, что то, что вы ищете, это:
<ul>
@foreach (Order order in Model.orders.List)
{
<li>@order.clientName - @order.orderNumber</li>
}
</ul>
Это предполагает, что вы отправляете объект OrderModel
в качестве модели представления:
public ActionResult MyOrderAction()
{
//get the XML
XElement xmlData = ReadTheXmlData();
//get the model
OrderModel model = new OrderModel(xmlData);
return View(model);
}
XElement
из файлов XML и затем передать его конструктору OrderModel
. Этот метод использует существующую логику вашего модельного класса.
Model
не отображается магическим образом.View
построено вокругModel
что означает, чтоModel
должна быть "проанализирована", т.е.