日期:2014-05-18  浏览次数:21129 次

MVC3,页面submit刷新后,地址栏中url参数丢了
本人MVC3刚玩不久,昨天遇到个问题,不是很了解。请朋友们解惑。

简单点说就是页面submit刷新后,地址栏中url参数丢了。

具体情况如下:

页面URL:http://localhost:5286/Logger/OperLogIndex?a=a&RClick=20(带了2个参数)

页面内容就是几个文本框、一个查询按钮(submit),然后就是一个列表。如下:

@using (Html.BeginForm("OperLogIndex", "Logger", FormMethod.Post))
{
....内容
}

点击submit执行后台的action

public ActionResult OperLogIndex(FormCollection formColl, int currentPage = 1)
{
 .....
 return View();
}

页面刷新后,地址栏url变成了:http://localhost:5286/Logger/OperLogIndex

参数没了。请问如何解决。

(Ajax我知道是可以解决的。现在就是用普通刷新方式,能不能解决这个问题?原因是什么?请朋友们解惑。)





------解决方案--------------------
能把你Form表单的action截来嘛
再者action中得参数不直接给值,而是从在form的action中写的
------解决方案--------------------
因为form中的acrion属性值是/Logger/OperLogIndex,所以会跳转到这个页面啊,如果想用post方式跳转到新页面且带参数的话,你可以在post提交之前先改变action的值,也就是在input type="submit"在加上 onclick属性,例如<input type="submit" value="提交" onclick= 'this.form.action="/Logger/OperLogIndex?a=a&RClick=20" ' />
------解决方案--------------------
给你提供两种方法传参
1.@using (Html.BeginForm("OperLogIndex", "Logger", FormMethod.Post,new{a=XXX,RClick=XXXX}))
2.文本框<input type='text' name='a'> <input type='text' name='RClick'>

这两种方式传参controller里的action:
public ActionResult OperLogIndex(string a ,int RClick)