如何从控制器在MVC项目的ListView中添加项

本文关键字:ListView 添加 项目 MVC 控制器 | 更新日期: 2023-09-27 18:20:00

我看过很多网站,它们显示了实现这一目标的方法:

<ul>
@foreach (var customer in Model.Customer)
{
    <li>@customer</li>
} 
</ul>

我试图实现的是一个列表视图,它从XML文件向其中添加数据。

我在一个windows窗体上做了同样的事情,它后面的代码看起来像:

            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项目上做同样/类似的事情吗?在MVC项目中,我可以从视图中的模型中提取数据。

我已经将模型从windows窗体复制到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));
                }
            }        
        }

如何从控制器在MVC项目的ListView中添加项

根据您的评论和代码,我认为您正在寻找的是:

<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);
}