C# 列表中的数据未显示在foreach循环asp.net mvc中#

C# 列表中的数据未显示在foreach循环asp.net mvc中#,c#,html,asp.net,asp.net-mvc,C#,Html,Asp.net,Asp.net Mvc,我有一个包含列表的视图模型,当我将视图模型传递给并尝试使用foreach循环显示列表内容时,屏幕上不会显示任何内容。我已经调试过了,当列表在传递到视图之前肯定被数据填充时,我不知道为什么它不会显示。如果有人对我做错了什么有任何建议,我会非常感激。谢谢 我的控制器方法 [HttpPost] public ActionResult Create(OrderVM model) { //get the currentUser ID to search datab

我有一个包含列表的视图模型,当我将视图模型传递给并尝试使用foreach循环显示列表内容时,屏幕上不会显示任何内容。我已经调试过了,当列表在传递到视图之前肯定被数据填充时,我不知道为什么它不会显示。如果有人对我做错了什么有任何建议,我会非常感激。谢谢

我的控制器方法

    [HttpPost]
    public ActionResult Create(OrderVM model)
    {

        //get the currentUser ID to search database for user
        string currentUserId = User.Identity.GetUserId();

        //instantiate new ApplicationUser and assign the current user to this var
        ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);

        //instantiate new Event and assign the event being booked to this var
        Event currentEvent = db.Events.Find(model.EventID);

        // Initialize an Order data model, save it and gets its ID
        Order order = new Order
       {
           OrderDate = DateTime.Now,
           EventID = model.EventID,
           Event = currentEvent,
           user = currentUser

       };
        db.Orders.Add(order);
        db.SaveChanges(); 
        float total = 0;

        // Initialise a TicketsOrdered data model for each valid ticket
        foreach (TicketVm ticket in model.Tickets.Where(t => t.Quantity > 0))
        {
            total += (ticket.Price*ticket.Quantity);
            TicketsOrdered ticketOrder = new TicketsOrdered
          {
              OrderID = order.OrderID,
              TicketID = ticket.TicketID,
              Quantity = ticket.Quantity
          };
            db.ticketsOrdered.Add(ticketOrder);
        }

        order.OrderTotal = total;
        currentEvent.Order.Add(order);
        currentUser.Order.Add(order);    
        db.SaveChanges(); 

        //instantiate new SummaryVm to display order to user and complete transaction
        SummaryVm summaryVm = new SummaryVm
        { 
            email = order.user.UserName, 
            orderID = order.OrderID,
            tickets = model.Tickets, 
            totalPrice = total, 
            eventID = model.EventID,
        };

        return RedirectToAction("OrderSummary", "Order", summaryVm);
    }
我的视图模型

public class SummaryVm
{

    public IList<TicketVm> tickets { get; set; }
    public string email { get; set; }
    public float totalPrice { get; set; }
    public int orderID { get; set; }
    public int eventID { get; set; }

}

public class TicketVm
{
    public int TicketID { get; set; }
    public string Description { get; set; }
    public float Price { get; set; }
    public int Quantity { get; set; }
}
公共类摘要VM
{
公共IList票证{get;set;}
公共字符串电子邮件{get;set;}
公共浮动总价{get;set;}
公共int-orderID{get;set;}
public int eventID{get;set;}
}
公共类票证
{
public int TicketID{get;set;}
公共字符串说明{get;set;}
公开浮动价格{get;set;}
公共整数数量{get;set;}
}
我的订单摘要视图

@model Site.ViewModels.SummaryVm
<head>
 <title>Summary</title> 
</head>
<body>
 <table class="table">
                    <thead>
                        <tr>
                            <th>Ticket Type</th>
                            <th><span contenteditable>Price</span></th>
                            <th><span contenteditable>Quantity</span></th>

                        </tr>
                    </thead>
                    <tbody>
                        @foreach (Site.ViewModels.TicketVm ticket in Model.tickets)
                        {
                            <tr>
                                               row
                                <td><span contenteditable>@ticket.Description</span></td>
                                <td><span contenteditable>@ticket.Price</span></td>
                                <td><span contenteditable>@ticket.Quantity</span></td>
                            </tr>
                        }
                    </tbody>
                </table>
</body>
@model Site.ViewModels.SummaryVm
总结
票型
价格
量
@foreach(Model.tickets中的Site.ViewModels.TicketVm票证)
{
一行
@车票,描述
@票价
@票,数量
}

为什么要调用RedirectToAction?它永远不会携带任何数据。RedirectToAction的最后一个参数仅携带路由字典值。请参见

为什么要调用RedirectToAction?它永远不会携带任何数据。RedirectToAction的最后一个参数仅携带路由字典值。请参见

正如Saleem所说,您不想使用RedirectToAction。这将导致另一个HTTP调用,并使您更难通过HTTP发送数据

您有两个选择: 1) 如果要将该数据传递到该方法(在同一控制器内)并进行进一步的工作,可以使用一个参数(如果在其他地方调用该参数,则可能会使用默认参数),只需使用
return OrderSummary(summaryVm)


2) 这是你最想做的事情。如果两者都使用相同的视图,则可以使用返回视图(“OrderSummary”、“Order”、summaryVm”)显式说明要返回的视图。这允许您从查找与方法名称同名(或可能是控制器)的视图更改。正如Saleem所说,您不想使用RedirectToAction。这将导致另一个HTTP调用,并使您更难通过HTTP发送数据

您有两个选择: 1) 如果要将该数据传递到该方法(在同一控制器内)并进行进一步的工作,可以使用一个参数(如果在其他地方调用该参数,则可能会使用默认参数),只需使用
return OrderSummary(summaryVm)


2) 这是你最想做的事情。如果两者都使用相同的视图,则可以使用返回视图(“OrderSummary”、“Order”、summaryVm”)显式说明要返回的视图。这允许您从查找与方法名称同名(或可能是控制器)的视图更改。我认为在将数据发布到服务器时,您应该遵循此处的模式。您只是不能在调用RedirectToAction时发送数据。您必须重定向到OrderSummary控制器操作,并从数据库中取回数据,或将所需数据推送到会话或TempData中,以便在下一个视图中可用。

我认为在将数据发布到服务器时,您应该遵循此处的模式。您只是不能在调用RedirectToAction时发送数据。您必须重定向到OrderSummary控制器操作,并从数据库取回数据,或将所需数据推送到会话或TempData中,以便在下一个视图中可用。

我是否应该调用返回视图(summaryVm)?是和否。这取决于您尝试执行的操作。如果您决定调用视图,则必须传递视图名称,因为按照惯例,它将调用名为的视图以执行操作。因此,查看(,)例如,在您的案例中,返回视图(“OrderSummary”,summaryVm)谢谢@Saleem我使用了返回视图,它工作得很好。我应该调用返回视图(summaryVm)吗?是和否。这取决于您试图做什么。如果您决定调用视图,则必须传递视图名称,因为按照惯例,它将调用名为的视图以执行操作。因此,视图(,)例如,在您的案例中,返回视图(“OrderSummary”,summaryVm)感谢@Saleem我使用了返回视图,它工作得非常好。