Как можно отобразить общее количество записей, которые таблица хранит (количество) в представлении, передав значение счетчика в «методе возврата» - PullRequest
0 голосов
/ 01 ноября 2019

Как отобразить общее количество записей в таблице (количество). Я хотел бы отобразить счетчик в представлении, поэтому я пытаюсь передать счет в качестве параметра в возвращаемом представлении, но получаю сообщение об ошибке, в котором говорится, что невозможно преобразовать строку в int. Я уверен, что есть более разумный способ сделать это. Я попытался преобразовать значение int с помощью toString (), но я все еще получаю ошибки синтаксиса после этого. Я поместил и мой контроллер и вид ниже. Обратите внимание, что я пытаюсь сделать в моем контроллере в методе обратного просмотра. Я пытаюсь вставить счетчик, но получаю ошибку, которая говорит, что не может преобразовать из int? в строку

Контроллер

  using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Data;
    using System.Web.Http;
    using System.Configuration;
    using PagedList;

    namespace App.Web.Controllers
    {
        public class DisplayUploadedFileController : Controller
        {
            private EntitiesModel db = new EntitiesModel();

            public ActionResult DisplayUploadedFileContents(int? id, int? page, int? totalCount)
            {

                var vm = new dbclients_invalidEmailsVM();
                vm.UploadId = id ?? default(int);
                if (page == null)
                {
                    page = 1;
                }
                int pageSize = 10;
                int pageNumber = (page ?? 1);

                var rows = from myRow in db.tbl_dataTable
                           select myRow;
                totalCount = rows.Count();

                return View(db.tbl_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.UploadId == id).ToList().ToPagedList(pageNumber, pageSize), totalCount);

            }
        }

}

Просмотр

@model PagedList.IPagedList<App.Web.marketingdbclients_dataTable>
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <link href="http://www.jqueryscript.net/css/jquerysctipttop.css" rel="stylesheet" type="text/css">
    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="pagination.js"></script>
</head>
<body>
    <div class="container" style="margin-top:50px;">

        <table class="table" id="table">
            <tr>
                <th>
                    First Name
                </th>

                <th>
                    Last Name
                </th>
                <th>
                    Cell1
                </th>
                <th>
                    Email1
                </th>

                <th>
                    Company
                </th>
                <th>
                    Job Title
                </th>
                <th>
                    Province
                </th>

                <th>
                    Source
                </th>
            </tr>

            @foreach (var item in Model)
            {
                <tr>

                    <td>
                        @Html.DisplayFor(modelItem => item.FirstName)
                    </td>

                    <td>
                        @Html.DisplayFor(modelItem => item.LastName)
                    </td>

                    <td>
                        @Html.DisplayFor(modelItem => item.Cell1)
                    </td>

                    <td>
                        @Html.DisplayFor(modelItem => item.Email1)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Company)
                    </td>

                    <td>
                        @Html.DisplayFor(modelItem => item.JobTitle)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.PhysicalProvince)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Source)
                    </td>



                </tr>
            }

        </table>
        </br>
        Number of Records  @Model.Count()<br />

        Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
        @Html.PagedListPager(Model, page => Url.Action("DisplayUploadedFileContents", new { uploadId = Model.First().UploadId, page }))
    </div>
</body>
</html>


My Table Represented as a model

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

    namespace App.Web
    {
        using System;
        using System.Collections.Generic;

        public partial class marketingdbclients_dataTable
        {
            public int ClientDataId { get; set; }
            public Nullable<int> ClientId { get; set; }
            public Nullable<int> UploadId { get; set; }
            public string FirstName { get; set; }
            public string MiddleName { get; set; }
            public string LastName { get; set; }
            public string IdentificationNumber { get; set; }
            public string RaceId { get; set; }
            public string DateOfBirth { get; set; }
            public string Age { get; set; }
            public string TitleTypeId { get; set; }
            public string GenderTypeId { get; set; }
            public string Nationality { get; set; }
            public string PhysicalCountry { get; set; }
            public string PhysicalProvince { get; set; }
            public string PhysicalCity { get; set; }
            public string Area { get; set; }
            public string HighestQualification { get; set; }
            public string CurrentQualification { get; set; }
            public string PhysicalAddress { get; set; }
            public string PostalAddress { get; set; }
            public string Cell1 { get; set; }
            public string Cell2 { get; set; }
            public string Cell3 { get; set; }
            public string Cell4 { get; set; }
            public string Work1 { get; set; }
            public string Work2 { get; set; }
            public string Work3 { get; set; }
            public string Work4 { get; set; }
            public string Home1 { get; set; }
            public string Home2 { get; set; }
            public string Home3 { get; set; }
            public string Home4 { get; set; }
            public string LSMGroup { get; set; }
            public string Municipality { get; set; }
            public string Crediting_Rating { get; set; }
            public string Email1 { get; set; }
            public string Email2 { get; set; }
            public string Email3 { get; set; }
            public string Email4 { get; set; }
            public string Income { get; set; }
            public string Company { get; set; }
            public string Industry { get; set; }
            public string JobTitle { get; set; }
            public string LeadStage { get; set; }
            public string ReggieNumber { get; set; }
            public string Source { get; set; }
            public System.DateTime DateInserted { get; set; }
            //public int totalEntriesCount { get; set; }
        }
    }

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Вы можете передать только один объект модели при вызове View(model).

Вы можете создать объект, содержащий как счетчик, так и данные, которые вы используете в качестве модели представления.

Простой способ сделать это - использовать анонимный объект:

 return View(
  new {
    Page = db.tbl_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.UploadId == id).ToList().ToPagedList(pageNumber, pageSize)db.tbl_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.UploadId == id).ToList().ToPagedList(pageNumber, pageSize),
    Count = totalCount
 });
1 голос
/ 01 ноября 2019

Пожалуйста, создайте новый класс ViewModel и сохраните ваши два входа следующим образом:

public class MyViewModel
{
    public List<marketingdbclients_dataTable> marketingdbclients_dataTables { get; set; }
    public int totalCount { get; set; }

    public MyViewModel()
    {
        this.marketingdbclients_dataTables = new List<marketingdbclients_dataTable>();
        this.totalCount = 0;
    }
}

Файл контроллера должен быть

public ActionResult DisplayUploadedFileContents(int? id, int? page, int? totalCount)
{
     var vm = new dbclients_invalidEmailsVM();
     vm.UploadId = id ?? default(int);
     if (page == null)
     {
        page = 1;
     }
     int pageSize = 10;
     int pageNumber = (page ?? 1);   
     var rows = from myRow in db.tbl_dataTable
                select myRow;
     totalCount = rows.Count();
     MyViewModel model = new MyViewModel();
     model.marketingdbclients_dataTables = db.tbl_dataTable.OrderByDescending(r => r.ClientId).Where(r => r.UploadId == id).ToList().ToPagedList(pageNumber, pageSize);
     model.totalCount = totalCount ;
     return View(model);               

}

Затем в вашем View (index.cshtml) объявитеMyViewModel примерно так:

@model WebApp.Models.MyViewModel

<div>
    your html
</div>

Концепция, которую мы только что использовали, называется View Model. Пожалуйста, прочитайте больше об этом здесь: Понимание ViewModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...