本人MVC3刚玩不久,昨天遇到个问题,不是很了解。请朋友们解惑。简单点说就是页面submit刷新后,地址栏中url参数丢了。具体情况如下:页面URL:http://localhost:5286/Logger/OperLogIndex?a=a&RClick=20(带了2个参数)页面内容就是几个文本框、一个查询按钮(submit),然后就是一个列表。如下:@using (Html.BeginForm("OperLogIndex", "Logger", FormMethod.Post))
{
....内容
}点击submit执行后台的actionpublic ActionResult OperLogIndex(FormCollection formColl, int currentPage = 1)
{
 .....
 return View();
}页面刷新后,地址栏url变成了:http://localhost:5286/Logger/OperLogIndex参数没了。请问如何解决。(Ajax我知道是可以解决的。现在就是用普通刷新方式,能不能解决这个问题?原因是什么?请朋友们解惑。)

解决方案 »

  1.   

    能把你Form表单的action截来嘛
    再者action中得参数不直接给值,而是从在form的action中写的
      

  2.   

    因为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" ' />
      

  3.   

    给你提供两种方法传参
    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)
      

  4.   

    也就是说 你的action里的参数名和文本框的name一样 就能把文本框的value传过去
      

  5.   

    你没能理解我的需求。
    我浏览器地址栏中的url的参数,是在我点击菜单的时候用JS加上去的。所以不可能new{a=XXX,RClick=XXXX}))这样去做。
      

  6.   

    不知道你JS里怎么写的,如果你在JS里document.location.hre='Logger/OperLogIndex?a=a&RClick=20'那就属于跳转了 不是提交 最简单的办法 在form里加两个hidden js里给hidden赋值  ,hidden的name 跟你的action里的参数一样