【问题标题】:How to link a list table view to another table view for details using ASP.NET MVC如何使用 ASP.NET MVC 将列表表视图链接到另一个表视图以获取详细信息
【发布时间】:2020-03-05 01:14:00
【问题描述】:

我正在查看第一页上的列表,并且在第二页上它应该使用第一页上数据库中的相同 ID 进行链接,但第二页是其详细信息页面。

第一页 - 列表视图

第二页 - 详情

这是我已经尝试过的

示例:http://abctutorial.com/Post/53/mvc5-master-detail-edit-using-aspnet--jquery--razor

调用的模型:“Ordering”及其在 ListView 上的显示

        public Ordering()
        {
            this.Invoice_Line_Item = new HashSet<Invoice_Line_Items>();
        }
        [Key]
        public int order_id { get; set; }
        public Guid? CustomerId { get; set; }
        public int? CustId { get; set; }
        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
        [StringLength(34)]
        public string invoice_number { get; set; }
        [StringLength(200)]
        public string EmailId { get; set; }
        [StringLength(50)]
        public string ClientFirstname { get; set; }
        [StringLength(50)]
        public string ClientLastname { get; set; }
        [StringLength(50)]
        public string MobileNumber { get; set; }
        [StringLength(50)]
        public string PaymentStatus { get; set; }
        [StringLength(50)]
        public string trackingorderno { get; set; }
        [StringLength(50)]
        public string Status { get; set; }
        [StringLength(200)]
        public string DeliveryNote { get; set; }
        [StringLength(250)]
        public string Agent { get; set; }
        public DateTime? date_order_placed { get; set; }
        public virtual ICollection<Invoice_Line_Items> Invoice_Line_Item { 
        get; set; }

“订购”的列表视图页面

@model IEnumerable<LifestyleAdminOriginal.Models.Ordering>

          @foreach (var item in Model)
            {
             <tr>
              <td>
               @Html.DisplayFor(modelItem => item.invoice_number)
              </td>
               <td>
               @Html.DisplayFor(modelItem => item.ClientFirstname) @Html.DisplayFor(modelItem => item.ClientLastname)
               </td>
               <td>
               @Html.DisplayFor(modelItem => item.EmailId)
               </td>
               <td>
                @Html.DisplayFor(modelItem => item.MobileNumber)
                </td>
                <td>
                <span class="label label-danger">@Html.DisplayFor(modelItem => item.Status)</span>
                </td>
                <td>
               @Html.ActionLink("View", "NewOrdersDetails", new { id = item.CustId })
                 </td>
                 </tr>
                }

“Invoice_Line_Items”的详细信息页面

<div class="row">
                                    @if (Model.Count() != 0)
                                    {
                                        foreach (var item in Model)
                                        {
                                            <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
                                                <div class="invoice-sp">
                                                    <table class="table table-hover">
                                                        <thead>
                                                            <tr>

                                                                <th>Service</th>
                                                                <th>Item</th>
                                                                <th>Gender</th>
                                                                <th>Unit Price</th>
                                                                <th>Quantity</th>
                                                                <th>Total</th>
                                                            </tr>
                                                        </thead>
                                                        <tbody>
                                                            <tr>
                                                                @foreach (var inv in item.Invoice_Line_Item)
                                                            {
                                                                        <th>@inv.service</th>
                                                                        <td>@inv.item</td>
                                                                    <td>@inv.gender</td>
                                                                    <td>@inv.price</td>
                                                                    <td>@inv.quantity</td>
                                                                    <td>@inv.price</td>
                                                            }
                                                            </tr>

                                                        </tbody>
                                                    </table>
                                                </div>
                                            </div>
                                             }
                                        }
                                        </div>

“排序”的列表视图控制器

public ActionResult NewOrders()
        {
            var count = db.Orderings.Where(s => s.trackingorderno == "New Order").Count();
            ViewBag.totalall = count;

            return View(db.Orderings.ToList().Where(x => x.trackingorderno == "New Order").Select(x => x));
        }

“Invoice_Line_Items”和“Ordering”的详细信息视图控制器

public ActionResult NewOrdersDetails(int? CustId)
        {
            if (CustId == null)
            {
                return new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            List<Ordering> OrderAndCustomerList = db.Orderings.ToList();
            
            if (OrderAndCustomerList == null)
            {
                return HttpNotFound();
            }
            return View(OrderAndCustomerList);
        }

基本上,每当用户点击列表视图页面上的“查看”时,它应该将他们带到详细信息页面,该页面显示发票行项目并在“详细信息视图”页面上显示客户详细信息

【问题讨论】:

  • NewOrdersDetails 方法所属的控制器的名称是什么,DetailsViewController?另外,您收到的错误是什么?
  • 您是在问如何使用 CustId 获取详细信息?
  • 是的,正确的@benmartin101

标签: asp.net-mvc asp.net-mvc-4 model-view-controller model invoice


【解决方案1】:

我设法从以下链接上的示例中得到答案。我在模型 Ordering

上使用了 ICollection

https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-basic-crud-functionality-with-the-entity-framework-in-asp-net-mvc-application

    **Ordering Model**
    [ForeignKey("order_id")]
    public virtual ICollection<Invoice_Line_Items> Invoice_Line_Item { get; set; }

    **Invoice_Line_Items Model**
    public virtual Ordering Ordering { get; set; }



         **Details Page**
         <table class="table">
            <tr>
                <th>Service</th>
                <th>Department</th>
            </tr>
            @foreach (var item in Model.Invoice_Line_Item)
            {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.invoice_number)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.service)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.department)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.item)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.quantity)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.price)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.vat)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.grandtotal)
            </td>
        </tr>
            }
        </table>

【讨论】:

    【解决方案2】:

    在显示主要数据的第一个表和第一个表数据的第二个表详细信息中 所以你必须在主表内容中获取详细表内容 id 并将其发送到带有主表中详细 id 的第二页。

    【讨论】:

    • 我正在尝试这个链接link,但它给了我一个错误提示:invalid column name "Ordering_order_id" @Vijay Dwivedi
    • 欢迎来到 SO!那么您究竟打算如何做到这一点?那是评论而不是答案。直到您没有足够的 Rep。您应该给出更好的答案或删除。
    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多