分页在MVC4中不起作用

时间:2016-09-21 04:36:45

标签: asp.net-mvc asp.net-mvc-4

我正在设计一个页面,我正在通过分页显示一些细节。页面工作正常,除了分页。当我点击第二页时没有任何反应。所有数据都会显示出来。另外,当我点击第二页控件时,不会转到我的操作方法。这是我的寻呼机代码。

  @Html.PagedListPager(Model.logDetails, page => Url.Action("Index",
                 new { page, currentFilter = ViewBag.CurrentFilter, filterdateTime=ViewBag.filterdateTimepageSize, }))
                Page @(Model.logDetails.PageCount < Model.logDetails.PageNumber ? 0 : Model.logDetails.PageNumber) of @Model.logDetails.PageCount

这是我的行动方法代码。

[HttpPost]
        public ActionResult Index(int? clientId, DateTime? dateofAction,string typeofDocument,string employeeID,string citizenId,int? currentFilter,DateTime? filterdateTime,int? page)
        {
            DB_KYC3Entities db = new DB_KYC3Entities();
            ViewBag.docTypes = new SelectList(db.tm_doc_type, "doc_typeid", "doctype_name");
            if (clientId != null)
            {
                page = 1;
            }
            else
            {
                clientId = currentFilter;
            }
            if(dateofAction!=null)
            {
                page = 1;
            }
            else
            {
                dateofAction = filterdateTime;
            }
            ViewBag.CurrentFilter = clientId;
            ViewBag.filterdateTime = dateofAction;
            int pageSize = 8;
            int pageNumber = (page ?? 1);
            VerificationLogBAL obj = new VerificationLogBAL();
            int docType = obj.GetDocDetails(typeofDocument);
            List<logDetails> logDetails = obj.getlogDetails(clientId?? default(int), dateofAction?? DateTime.Now, docType, employeeID, citizenId);
            IPagedList<logDetails> pagedLog = logDetails.ToPagedList(pageNumber, pageSize);
            logDetailsEnumeration model = new logDetailsEnumeration();
            ViewBag.checkData = logDetails.Count;
            model = new logDetailsEnumeration()
            {
                logDetails= pagedLog
            };
            return View("Index",model);
        }

这是我的观看代码。

<div class="forms">
    @using (Html.BeginForm("Index", "VerificationLog", FormMethod.Post))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)
        <div class="message"></div>

        <div class="loginUsernamePassword">
            <i class="fa fa-user"></i>
            <table width="100%" border="0" cellspacing="0" cellpadding="0" class="dataTable tableHover">
                <tr>
                    <th width="8%" scope="col">Client ID</th>
                    <th width="20%" scope="col">
                        <div class="form-box form-box-default">
                            @Html.TextBox("clientId", ViewBag.CurrentFilter as string, new { @id = "clientId", @placeholder = "Client ID", @class = "form-control", @maxlength = 20 })

                        </div>
                    </th>
                    <th width="10%" scope="col">Date Of Action</th>
                    <th width="20%" scope="col">
                        <div class="form-box form-box-default">
                            @Html.TextBox("dateofAction", ViewBag.filterdateTime as string, new { @id = "dateofAction", @placeholder = "Date Of Action", @class = "txtBox form-control calender validate[required]" })
                        </div>
                    </th>
                    <th width="15%" scope="col">Type Of Document</th>
                    <th width="17%" scope="col">
                        <div class="form-box form-box-default">
                            @*@Html.TextBox("typeofDocument", ViewBag.filterdateTime as string, new { @id = "typeofDocument", @placeholder = "Type Of Document", @class = "form-control", @maxlength = 20 })*@
                            @Html.DropDownList("docTypes",null,new {@id = "typeofDocument", @placeholder = "Type Of Document", @class = "form-control"})
                                                </div>
                    </th>
                </tr>
                <tr>
                    <th width="15%" scope="col">Employee ID</th>
                    <th width="17%" scope="col">
                        <div class="form-box form-box-default">
                            @Html.TextBox("employeeID", ViewBag.filterdateTime as string, new { @id = "employeeID", @placeholder = "Employee ID", @class = "form-control", @maxlength = 20 })

                        </div>
                    </th>
                    <th width="15%" scope="col">Citizen ID</th>
                    <th width="17%" scope="col">
                        <div class="form-box form-box-default">
                            @Html.TextBox("citizenId", ViewBag.filterdateTime as string, new { @id = "citizenId", @placeholder = "Citizen ID", @class = "form-control", @maxlength = 20 })


                        </div>
                    </th>
                    <th width="10%" scope="col" colspan="2">
                        <input type="submit" value="Search" class="btn btn-primary btn-cons search" />
                </tr>
            </table>

            </div>
            }

        </div>
  @if (Model != null && Model.logDetails.Count != 0)
        {
            <br />
            <h2>Verification Log</h2>
            <br />
            <div id="GridDetails">
                <table width="100%" border="0" cellspacing="0" cellpadding="0" class="dataTable tableHover">
                    <tr>
                        <th>Label</th>
                        <th>Value</th>
                        <th>UpdatedOn</th>
                        <th>UpdatedBy</th>
                        <th>UpdatedStatus</th>
                        <th>RejectComment</th>
                    </tr>
                    @foreach (var group in Model.logDetails)
                    {
                        <tr>
                            <td>@group.contentLabel</td>
                            <td>@group.contentValue</td>
                            <td>@group.updatedOn</td>
                            <td>@group.updatedBy</td>
                            <td>@group.updatedStatus</td>
                            <td>@group.rejectComment</td>
                        </tr>

                    }
                </table>


   [HttpGet]
public ActionResult Index()
{
    DB_KYC3Entities db = new DB_KYC3Entities();
    ViewBag.docTypes = new SelectList(db.tm_doc_type, "doc_typeid", "doctype_name");
    return View();
}

当我点击第二页控件时,也不会转到我的索引方法。此外,我有5个文本框,所以我需要保留viewbag中的所有5个文本框值?有人能告诉我吗?提前致谢

1 个答案:

答案 0 :(得分:0)

PagedListPager进行GET调用,而非POST,因此您需要从[HttpPost]方法中删除Index()属性。与此相关,您需要更改表单以进行GET

@using (Html.BeginForm("Index", "VerificationLog", FormMethod.Get))

是的,您需要保留viewbag中的所有5个文本框值(或者更好地使用视图模型)并在寻呼机Url.Action()中添加这些值,方法与正在添加currentFilterfilterdateTime