在html表单中进行mvc分页

时间:2016-12-07 15:07:00

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

我试图在html表单中创建分页。 如何让每个页面按钮更改模型的CurrentPage属性?

我是MVC的新手,请耐心等待 我有一个报告列表,我需要在名为Search的视图中显示。我为其创建了一个模型(ReportViewModel),另一个模型包含了一个名为SearchViewModel的列表。在SearchViewModel我还有一些其他变量,例如SearchNameSearchDateCurrentPagePageCountPageSize等。目标是进行分页并在Search中搜索名为ReportsController的一个操作。

现在,我想通过仅将SearchViewModel实例作为参数给予该函数来保持该操作简单,以便在内部使用该模型的所有变量。这样做,我不必两次输入参数名称(一次在SearchViewModel中,一次作为Search动作中的参数)。我不需要在其他地方使用该搜索功能,因此除了SearchViewModel实例之外没有任何参数可以。

所以,非常宽松,它看起来像这样:

ReportsController.cs

public class ReportsController : Controller
{
    public ActionResult Search(SearchViewModel model)
    {
        if (!ModelState.IsValid)
            return View(model);

        // do search magic here

        return View(model)
    }
}

Search.cshtml

@model ISFinReports.Models.SearchViewModel
@{
    ViewBag.Title = "List";
    Layout = "~/Views/_masterLayout.cshtml";
}
<link href="~/CSS/Search.css" rel="stylesheet" />
<script src="~/Scripts/Search.js"></script>


@using (Html.BeginForm("Search", "Reports", FormMethod.Get))
{
    <div id="divSearchBar">
        // add @Html.DropDownListFor, @Html.TextBoxFor and submit button here
    </div>

    <div id="divReportsTable">
        <table id="tblReports">
            @if (Model.Reports != null)
            {
                foreach (var r in Model.Reports)
                {
                    // add tr, td of all reports in report list
                }
            }
        </table>
    </div>

    <div style="text-align:center">
        @for (int i = 0; i < Model.PageCount; i++)
        {
            @Html.ActionLink(i.ToString(), "Search", "Reports", new { CurrentPage = i });
            // or
            // <input type="submit" value="@i" onClick="meybe something like this?" />
        }
        Current Page @Html.EditorFor(q => q.CurrentPage), of total @Model.PageCount pages
    </div>
}

我知道我可以简单地输入两次我需要在控制器和视图之间流动的所有数据,一次在模型中,一次在Search动作参数,但这可以解释为什么我是什么?尽力不去做。目前我有一个textbox用于编辑当前页面,它可以正常工作,因为它是通过@ Html.EditorFor创建的,但我希望每个页面都有多个按钮。

我可以在该表单中创建一个hidden字段,并创建一个javascript函数,按ID找到hidden字段,并更改它{{1}然后调用提交按钮value函数的任何内容。 但是,是否有更好/更短/更多MVC的方式来实现它?

0 个答案:

没有答案