问题:view中的hidden值,control第二次读取Request就为null。
我百度搜到的是:
http://my.oschina.net/vernon/blog/363693
《解决在Filter中读取Request中的流后, 然后再Control中读取不到的做法》
表示没看懂,有什么解决办法吗?
问题描述:
我用了pagedlist,分页显示什么的都是成功的,第一次通过hidden传递月薪,分页显示的是根据月薪条件显示的内容,不过点击其他页时,hidden月薪在control中接受不到。
view中代码:
<%using (Ajax.BeginForm("PositionList", "Position", new AjaxOptions { UpdateTargetId = "MVCpager", HttpMethod = "Get", Url = Url.Action("PositionList") }, new { @id = "searchForm", name = "searchForm"}))
{%>
<input type="hidden" name="yx" id="yx" value="<%=(string)ViewBag.yx%>" /><!--月薪-->
。。。。。省略
<%}%>
<%=Html.PagedListPager(Model,
page => Url.Action("PositionList",
new { page}
),
PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(
new PagedListRenderOptions
{
LinkToPreviousPageFormat = "上一页",
LinkToNextPageFormat = "下一页",
LinkToFirstPageFormat = "第一页",
LinkToLastPageFormat = "最后一页",
MaximumPageNumbersToDisplay = 4
},
new AjaxOptions()
{
HttpMethod = "Get",
UpdateTargetId = "MVCpager"
}))%>
control代码:
public ActionResult PositionList(int? page)//职位信息列表
{
int pageSize = 1; //每页显示的信息数
int pageIndex =page??1;
int count = 1;
string EB = "";
string JC = "";
string WE = "";
string WC = "";
string YX = "";
if (Request["yx"]!= null)
{
YX = Request["yx"];
ViewBag.yx = Request["yx"];
}
List<CompanyPosition> CompanyPosition = positionmanage.PositionList(pageIndex, pageSize, EB, JC, WE, WC, YX, out count);
List<ModelCompanyPosition> MCompanyPosition = new List<ModelCompanyPosition>();
。。。。。省略
。。。。。。
//var CPage = MCompanyPosition.ToPagedList(pageIndex, pageSize);
var CPage = new StaticPagedList<ModelCompanyPosition>(MCompanyPosition, pageIndex, pageSize, count);
PagedClientViewModel test = new PagedClientViewModel();
test.ModelCompanyPosition = CPage;
test.yx = ViewBag.yx;
//int test = CPage.TotalItemCount; //总数据条数
int test1 = CPage.PageNumber; //当前页
int test2 = CPage.PageCount; //总页数
i
return View(test);
}
这是首次显示的效果:
这是第一次点击上图左侧月薪一栏,control中接受到数据的效果图:
这是选择月薪条件后,显示的分页信息:
这是点击上图中其他页(例如:点击第三页)后,control中的情况:
月薪的值并没有传到control中,而页码传到control中了。
static string test = “”;
public ActionResult PositionList(int? page)//职位信息列表
{
int pageSize = 1; //每页显示的信息数
int pageIndex =page??1;
int count = 1;
string EB = "";
string JC = "";
string WE = "";
string WC = "";
string YX = "";
if (Request["yx"]!= null)
{
YX = Request["yx"];
ViewBag.yx = Request["yx"];
}
if(test!=null)
{
YX = test;
}
List<CompanyPosition> CompanyPosition = positionmanage.PositionList(pageIndex, pageSize, EB, JC, WE, WC, YX, out count);
List<ModelCompanyPosition> MCompanyPosition = new List<ModelCompanyPosition>();
。。。。。省略
。。。。。。
//var CPage = MCompanyPosition.ToPagedList(pageIndex, pageSize);
var CPage = new StaticPagedList<ModelCompanyPosition>(MCompanyPosition, pageIndex, pageSize, count);
PagedClientViewModel test = new PagedClientViewModel();
test.ModelCompanyPosition = CPage;
test.yx = ViewBag.yx;
//int test = CPage.TotalItemCount; //总数据条数
int test1 = CPage.PageNumber; //当前页
int test2 = CPage.PageCount; //总页数
i
return View(test);
}
贴你的Control代码,
我已补充问题
谢谢关注,我已解决
@屠龙灬世家: 不要用Static来解决它,你可以试着用多个不同的电脑访问,只要有其他人改变了Static的值,所有人取到的YX都改变,上线就会麻烦了。建议用地址栏保存用户点击的数据,或者用Cookie。
@happydaily: 非常感谢,这是我的毕设,所以上线啥的完全没经验,我再找资料改改看,有什么不懂的再问您。