Как добавить раскрывающийся список «модель» в модель IPagedlist?

У меня есть страница для отображения каждого журнала (сообщение, время, тип, идентификатор клиента, имя) в HTML-таблице. Поскольку журнал огромен, я использую IPagedList в Razor MVC, и это прекрасно работает. В настоящее время у меня есть 2 окна поиска (для администраторов) и 1 для членов. Где можно искать по сообщению и идентификатору клиента.

Теперь проблема в том, что я не хочу, чтобы у пользователей было только текстовое поле, в которое вы можете только ввести число (например, вы вводите идентификатор клиента 2 и получаете клиента T) - но вместо этого я хочу раскрывающийся список со всеми текущие имена клиентов, связанные с идентификаторами клиентов.

У меня есть эта функциональность на другой странице, которую я использую, но она работает только потому, что я возвращаю модель на другой странице, и потому что страница журнала возвращает «IPagedListModel» вместо «Модель», я не могу использовать это решение. Как бы заставить это решение работать и для моей страницы журнала?

HTML код

@:<p>@Html.DropDownListFor(m => m.SelectedCustomer, Model.CustomerList)</p>

модель

using System;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Collections.Generic;
using PagedList;
using System.Web.Mvc;

namespace ASDMVC.Models
{
    [Table("Log")]
    public class LogModel
    {
        [Key]
        public long id { get; set; }
        public string message { get; set; }
        public DateTime timeStamp { get; set; }
        public string level { get; set; }
        public int customerId { get; set; }
        [NotMapped]
        public string Name { get; set; }
    }

    public class LogModelVM
    {
        public int SelectedCustomer { get; set; }
        public IEnumerable<SelectListItem> CustomerList { get; set; }
        public string Message { get; set; } 
        public IPagedList<LogModel> Logs { get; set; }
    }

    public class LogDBContext:DbContext
    {
        public LogDBContext() : base("MySqlConnection")
        {

        }

        public DbSet <LogModel> Log { get; set; }

        public IQueryable<LogModel> GetLogs()
        {
            return from log in Log
                   select log;
        }
    }
}

контроллер

public class DbCustomerIds
{
    public List<DbCustomer> GetCustomerIds()
    {
        List<DbCustomer> Customers = new List<DbCustomer>();
        string queryString = "SELECT * FROM dbo.customers";
        SqlDataAdapter adapter = new SqlDataAdapter(queryString, System.Configuration.ConfigurationManager.ConnectionStrings["MySqlConnection"].ConnectionString);
        DataSet customers = new DataSet();
        adapter.Fill(customers, "Customers");

        foreach (DataRow item in customers.Tables[0].Rows)
        {
            DbCustomer cid = new DbCustomer();
            cid.FakeId = Convert.ToInt32(item["Id"]);
            cid.FakeName = Convert.ToString(item["Name"]);
            Customers.Add(cid);
        }
        return Customers;
    }
}

private IEnumerable<SelectListItem> GetCustomerIds()
{
    var DbCustomerIds = new DbCustomerIds();
    var customers = DbCustomerIds
                    .GetCustomerIds()
                    .Select(x =>
                            new SelectListItem
                            {
                                Value = x.FakeId.ToString(),
                                Text = x.FakeName
                            });
        return new SelectList(customers, "Value", "Text");
    }
}

[HttpPost]
    public PartialViewResult LogPartialView(string searchString, string searchString2, string currentFilter, string currentFilterz, int? page, string sortOrder)
    {
        if (Roles.IsUserInRole(WebSecurity.CurrentUserName, "Admin"))
        {
            Customer = GetCustomerIds();
            message = db.GetLogs();
            int pageSize = 10;
            int pageNumber = (page ?? 1);
            var logs = message.OrderByDescending(i => i.timeStamp).ToPagedList(pageNumber, pageSize);
            foreach (var log in logs)
                log.Name = Customer.Where(a => a.Value == log.customerId.ToString()).FirstOrDefault().Text;


        LogModelVM LMVM = new LogModelVM();
        LMVM.Logs = logs;
        LMVM.CustomerList = Customer;
        return PartialView("_LogPartialLayout", LMVM);
    }
LogModelVM LMVM = new LogModelVM();
        LMVM.Logs = logs;
        LMVM.CustomerList = Customer;
        return PartialView("_LogPartialLayout", LMVM);
}

_LogPartialLayout

@model ASDMVC.Models.LogModelVM
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />

@if (Roles.IsUserInRole(WebSecurity.CurrentUserName, "Admin"))
{
    <table class="table">
        <tr>
            <th id="tableth">
                message

            </th>
            <th id="tableth">
                timestamp
            </th>
            <th id="tableth">
                level
            </th>
            <th id="tableth">
                customerId
            </th>
            <th id="tableth">
                customerName
            </th>
        </tr>
        @foreach (var item in Model.Logs)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.message)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.timeStamp)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.level)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.customerId)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Name)
                </td>
            </tr>
        }
    </table>
}
@if (Roles.IsUserInRole(WebSecurity.CurrentUserName, "Member"))
{
    <table class="table">
        <tr>
            <th id="tableth">
                message

            </th>
            <th id="tableth">
                timestamp
            </th>
            <th id="tableth">
                level
            </th>

        </tr>

        @foreach (var item in Model.Logs)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.message)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.timeStamp)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.level)
                </td>
            </tr>
        }
    </table>
}

Page @(Model.Logs.PageCount < Model.Logs.PageNumber ? 0 : Model.Logs.PageNumber) of @Model.Logs.PageCount
@Html.PagedListPager(Model.Logs, page => Url.Action("LogPartialView", 
    new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, currentFilterz = ViewBag.CurrentFilterz }), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(PagedListRenderOptions.ClassicPlusFirstAndLast,
        new AjaxOptions
        {
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            UpdateTargetId = "divLogs"
        }))

Любая помощь будет оценена, извините за длинный вопрос - я просто хотел получить всю информацию, которая кажется относящейся к ситуации.

Заранее спасибо.

Текущая ошибка при запуске:

[InvalidOperationException: передаваемый в словарь элемент модели имеет тип 'PagedList.PagedList`1 [NowasteWebPortalMVC.Models.LogModel]', но для этого словаря требуется элемент модели типа 'NowasteWebPortalMVC.Models.LogModelVM'.]

Ответы на вопрос(1)

Ваш ответ на вопрос