Asp.net mvc 3 MvcContrib寻呼机-更改页面大小
我没有使用网格,只是使用MvcContrib寻呼机。我为寻呼机创建了一个局部视图(因此我可以轻松地在结果的顶部和底部显示它),它调用Asp.net mvc 3 MvcContrib寻呼机-更改页面大小,asp.net-mvc-3,razor,mvccontrib,Asp.net Mvc 3,Razor,Mvccontrib,我没有使用网格,只是使用MvcContrib寻呼机。我为寻呼机创建了一个局部视图(因此我可以轻松地在结果的顶部和底部显示它),它调用@Html。寻呼机方法如下: @Html.Pager(Model.PagedPrograms).First("<<").Last(">>").Next(">").Previous("<").Format("Item {0} - {1} of {2} ") @Html.Pager(Model.PagedPrograms)。第一个
@Html。寻呼机
方法如下:
@Html.Pager(Model.PagedPrograms).First("<<").Last(">>").Next(">").Previous("<").Format("Item {0} - {1} of {2} ")
@Html.Pager(Model.PagedPrograms)。第一个(“”)。下一个(“”)。上一个(),所以我要向Ek0nomik致敬,他让我在这个问题上跳出了思维定势
步骤1:确保所有要使用寻呼机控制器的页面都通过GET not POST传递所有参数。如果您必须在某处接受POST,请使用RedirectToAction,并将所有参数转换为GET方法的基本类型
步骤2:不要担心将.Link()
添加到寻呼机。只要所有内容都通过GET输入,您就可以了。它将查看页面的URL,并在您前进/后退时根据需要调整页码参数
步骤3(可选但推荐):为了在应用程序中保持一致性,您应该在某个地方(可能是您的Global.ascx.cs文件)定义一个您将支持的页面大小列表。在我的例子中,我使用了字典
,以便我可以将-1
作为页面大小
值传递,但显示全部
(当然,数据层必须知道-1
意味着禁用分页)
第4步:在寻呼机部分视图中添加如下内容:
<ul class="pageSizeSelector">
@foreach (KeyValuePair<int,string> kvp in MvcApplication.AVAIL_PAGE_SIZES)
{
<li><a href="#" onclick="changePageSize(@kvp.Key)">@kvp.Value</a></li>
}
</ul>
第6步(可选,除非你是一个网络巨魔):盈利!所以向Ek0nomik点头,他让我在这个问题上跳出了思维定势
步骤1:确保所有要使用寻呼机控制器的页面都通过GET not POST传递所有参数。如果您必须在某处接受POST,请使用RedirectToAction,并将所有参数转换为GET方法的基本类型
步骤2:不要担心将.Link()
添加到寻呼机。只要所有内容都通过GET输入,您就可以了。它将查看页面的URL,并在您前进/后退时根据需要调整页码参数
步骤3(可选但推荐):为了在应用程序中保持一致性,您应该在某个地方(可能是您的Global.ascx.cs文件)定义一个您将支持的页面大小列表。在我的例子中,我使用了字典
,以便我可以将-1
作为页面大小
值传递,但显示全部
(当然,数据层必须知道-1
意味着禁用分页)
第4步:在寻呼机部分视图中添加如下内容:
<ul class="pageSizeSelector">
@foreach (KeyValuePair<int,string> kvp in MvcApplication.AVAIL_PAGE_SIZES)
{
<li><a href="#" onclick="changePageSize(@kvp.Key)">@kvp.Value</a></li>
}
</ul>
第6步(可选,除非你是一个互联网巨魔):盈利!难道你不能用一个HTML
标记来控制页面大小吗?给元素一个idpageSize
,然后在ActionResult中查找该参数(确保它可以为空)并相应地设置页面大小?如果为空,则设置一个默认值。我认为您已经掌握了一些东西,尽管这有点棘手。我想我将尝试使用select with jQuery…onchange(function(){$(“.pager a”)。each(…//replace PageSize参数);})
这可能会起作用,但我不确定,而且似乎比它应该的要难。:)你不能用一个HTML
标记来控制页面大小吗?给元素一个idpageSize
,然后在ActionResult中查找该参数(确保它可以为null)并相应地设置页面大小?如果为空,则设置一个默认值。我认为您已经掌握了一些东西,尽管这有点棘手。我想我将尝试使用select with jQuery…onchange(function(){$(“.pager a”)。each(…//replace PageSize参数);})
这可能行得通,但我不确定,而且似乎比应该的要难从技术上讲,如果你喜欢你的HTML非常难看,但避免使用JS,你可以使用MVC获取当前URL作为字符串,然后使用RegEx
对象替换页面大小,就像我们使用JS一样,所以选择你的毒药。从技术上讲,如果你喜欢你的HTML非常难看,但避免使用JS,你可以使用MVC获取当前URL作为字符串,然后使用使用RegEx
对象替换页面大小,就像我们使用JS一样,所以选择你的毒药。
function changePageSize(size) {
var PSpattern = /PageSize=\d+/i;
var url = window.location.href;
url = url.replace(PSpattern, "PageSize=" + size);
window.location.href = url;
}