HTML动作链接asp.net mvc

mara19

我在通过操作链接传递id参数时遇到麻烦。我想在我的视图中添加一个取消按钮,这将使eventID返回该方法,对数据库做一些操作,然后重定向到另一个视图。我已经进入调试模式,当返回到方法时,id参数为null,我不明白为什么。

这是我创建初始视图的控制器方法

public ActionResult Create(OrderVM model)
{

    //get the currentUser ID to search database for user
    string currentUserId = User.Identity.GetUserId();
    int quantity = 10;
     ApplicationUser currentUser = db.Users.Find(currentUserId);

     Order order = new Order
     {
            OrderDate = DateTime.UtcNow,
            EventID = model.EventID,
            Event = currentEvent,
            user = currentUser

       };
                //add this order to the database
                db.Orders.Add(order);
                //save changes to database
                db.SaveChanges();

                SummaryVm summaryVm = new SummaryVm
                {
                    email = order.user.Email,
                    orderID = order.OrderID,
                    tickets = model.Tickets,
                    totalPrice = total,
                    ticketQuantity = quantity,
                    orderDate = order.OrderDate,
                    eventID = model.EventID,

                };

                return View("OrderSummary", summaryVm);
            }

这是OrderSummary视图

@model Site.ViewModels.SummaryVm
<head>
<title>Next Page</title>

</head>


    <header>
        <h2> Here is your order summary, please review before proceeding with payment. Please complete this transaction within 15 minutes or your order  will be cancelled. </h2>
    </header>
        <div class="float-left">
             <h2 id="countdown"></h2>
        </div>
    <div id="content">

        <div class="panel panel-default">
            <div class="panel-heading">Order Summary</div>
            <div class="panel-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 (GeoSocietySite.ViewModels.TicketVm ticket in @Model.tickets)
                        {
                            <tr>
                                <td><span contenteditable>@ticket.Description</span></td>
                                <td><span contenteditable>@ticket.Price</span></td>
                                <td><span  contenteditable>@ticket.Quantity</span></td>
                            </tr>
                        }
                    </tbody>
                </table>

                <table id="total-table">
                    <tr>
                        <th>Total Price in £: </th>
                        <td id="custom-amount">@Model.totalPrice</td>
                    </tr>
                </table>
            </div>
            </div>
        </div>
         @Html.ActionLink("Cancel", "CancelOrder", "Order", new { id = @Model.eventID })

这是我的CancelOrder控制器方法

    public ActionResult CancelOrder(int eventID)
    {
        //do something to db
        return RedirectToAction("CreateOrder", "Order", new { id = eventID    });
    }

这是我的创建订单方法

public ActionResult CreateOrder(int? id)
    {
        Event currentEvent = db.Events.Find(id);

        //check event exists
        if (currentEvent != null)
       {
         //get the ID of the user currently logged in to the site
         string currentUserId = User.Identity.GetUserId();
         //retreive details of current user from db based on ID
         ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);

          // Initialize a new order
          OrderVM model = new OrderVM
          {
             EventID = currentEvent.EventID,
             EventName = currentEvent.Name,
             OrderDate = DateTime.Now,
             FirstName = currentUser.FirstName,
             EventDate = currentEvent.Date,
             EventDescription = currentEvent.Description,
             EventLocation = currentEvent.Location,
            //create view model for each ticket type then place in list 
             Tickets = currentEvent.Tickets.Select(t => new TicketVm
             {
                    TicketID = t.TicketID,
                    Description = t.Description,
                    Price = t.Price
                    }).ToList(),
                };

                return View(model);
            }else
            {
              return RedirectToAction("Index", "Events");
        }
    }

当我尝试运行此代码时,我将重定向到“事件索引”页面,这意味着尚未从数据库中检索到该事件,并且通过调试,我可以看到这是因为ID参数为null。我已经检查了将summaryVm传递给OrderSummary视图时,它已完全填充了数据。如果有人看到我在做什么错,将非常感谢您的帮助。谢谢!

用户名

您使用了错误的重载ActionLink(以及您的添加htmlAttributes,而不是路由值)。此外,方法中的参数名为eventID,而不是id更改为

@Html.ActionLink("Cancel", "CancelOrder", "Order", new { eventID = Model.eventID }, null)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

asp.net mvc4 ajax动作链接

来自分类Dev

ASP.NET MVC 5:如何通过动作链接在div中呈现局部视图?

来自分类Dev

Asp.Net MVC如何记录所有被调用的动作

来自分类Dev

如何检查我来自asp.net mvc的哪个动作

来自分类Dev

具有动态输入参数的ASP.NET MVC动作

来自分类Dev

如何检查我来自asp.net mvc的哪个动作

来自分类Dev

如何在ASP.Net Core MVC中使用HTML链接?

来自分类Dev

ASP.NET MVC3链接与@ Html.Raw中的图像

来自分类Dev

ASP.NET MVC 忘记密码电子邮件链接未格式化为 Html

来自分类Dev

ASP.NET MVC HTML列显示

来自分类Dev

ASP.NET MVC中的HTML编码

来自分类Dev

将 HTML 从 ASP.NET MVC 控制器传递到浏览器直接链接不会呈现 HTML 标记

来自分类Dev

在没有MVC的ASP.NET中与Razor的相对链接

来自分类Dev

asp.net mvc 4设置viewbag链接

来自分类Dev

ASP.NET MVC表行,包括模型文本的链接

来自分类Dev

ASP.NET MVC表行,包括模型文本的链接

来自分类Dev

如何在asp.net MVC中创建Ajax链接?

来自分类Dev

asp.net mvc 4设置viewbag链接

来自分类Dev

链接到MVC 5 ASP.NET中的文件

来自分类Dev

渲染链接包含ASP.net MVC Razor中的跨度?

来自分类Dev

JS文件未链接到asp.net MVC视图

来自分类Dev

最小化Asp.Net MVC中的分页链接

来自分类Dev

如何修复asp net mvc中图片的链接

来自分类Dev

Javascript onload MVC ASP .NET MVC

来自分类Dev

Spring MVC与ASP.NET(MVC?)

来自分类Dev

Model Validation in asp .net MVC

来自分类Dev

ASP.NET MVC,Actionlink

来自分类Dev

ASP.net MVC路由

来自分类Dev

Asp.net Mvc身份