Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MvcContrib寻呼机-更改页面大小_Asp.net Mvc 3_Razor_Mvccontrib - Fatal编程技术网

Asp.net mvc 3 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)。第一个

我没有使用网格,只是使用MvcContrib寻呼机。我为寻呼机创建了一个局部视图(因此我可以轻松地在结果的顶部和底部显示它),它调用
@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
标记来控制页面大小吗?给元素一个id
pageSize
,然后在ActionResult中查找该参数(确保它可以为空)并相应地设置页面大小?如果为空,则设置一个默认值。我认为您已经掌握了一些东西,尽管这有点棘手。我想我将尝试使用select with jQuery…
onchange(function(){$(“.pager a”)。each(…//replace PageSize参数);})
这可能会起作用,但我不确定,而且似乎比它应该的要难。:)你不能用一个HTML
标记来控制页面大小吗?给元素一个id
pageSize
,然后在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;
}