最近公司准备开发手机版网站,使用到的技术是:jQuery mobile + MVC3而且我们公司没有对MVC3非常熟练的人员,纯粹的自学自编此为前提目前出现了一个情况页面大家将就着看,还没有进行过美化
(Index页面图)
 通过点击Index页面左上角的按钮,可进入添加(Create)页面(Create页面图)
将Create页面中的内容填写完整后,点击Submit按钮提交
数据处理完成后自动跳回Index页面中
控制器中的代码如下:[HttpPost]
public ActionResult Create(NewsClass newsclass)
{
    if (ModelState.IsValid)
    {
        db.News.Add(newsclass);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }    return View(newsclass);
}
但是现在问题就出来了,第一次添加数据成功并跳转回Index页面后,左上角的添加按钮失效了
点击不会在跳到Create页面中后来细心的同事发现了一个问题
第一次打开网站时Index页面的URL:
添加数据后跳转回来时Index页面的URL:
也就是说,我们添加完成后进行的页面跳转,页面显示的内容已经是Index的内容了,但是他的URL依旧是Create的
而我们Index页面中左上角的Create功能链接同样是:
我认为可能这个就是Create功能点击失效的原因,但是为什么Url没有改变?请大神们指教。MVC3asp.netjQuery MobileRedirectToAction

解决方案 »

  1.   

    你用   return Redirect() 试下看看 
    估计问题是在 :
      return RedirectToAction("Index");  
        return View(newsclass);
    这2个上面
      

  2.   

    我是通过ajax异步提交后,然后再返回到index.
      

  3.   

    return RedirectToAction("Index"); 直接改成Redirect("/NewsClass/Index")
      

  4.   

    楼主看看 PRG (POST/Redirect/GET)  这和 MVC / mobile 没关系
      

  5.   


    我把MVC3中Action可以调用的函数都测试过了都不行就是URL不转变。
      

  6.   

    我把MVC3中Action可以调用的函数都测试过了都不行就是URL不转变。这个也不行
      

  7.   


    我把MVC3中Action可以调用的函数都测试过了都不行就是URL不转变。
    主要我参考的MVC3的用例会不会是没有框架导致的?
      

  8.   

    可以都放在一个页面,通过js来回隐藏,通过ajax获取数据
      

  9.   


    这个可以有,但是基础页面已经成型了,如果全部在改为 DIV的显示隐藏 工作量太大了
      

  10.   

    之前的思路一直过于的死板,提留在原始的WEB开发层面,导致一直无法解决问题:首先我们通过Jquery的ajax进行数据提交:$(function () {
        $('#frmLogin').submit(function () {
            if (true) {
                $.ajax({
                    url: "Account/Login",
                    type: "post",
                    data: $('#frmLogin').serialize(),
                    success: function (msg) {
                        if (msg == "success")
                            $.mobile.changePage('Menu/Index', { transition: "slide" });
                        else
                            alert('登录失败。');
                    },
                    error: function (msg) {
                        alert(msg);
                    }
                });
            }
            return false;
        });
    });上面的JS代码中data: $('#frmLogin').serialize(),这句则是将form表单中的数据完全序列化,form中的各个元素的name属性遵守于Model类中的字段名称一致接下来最主要则是Action中需要进行的代码:[HttpPost]
    public void Login(WapOA.Models.UserInfo model)
    {
        bool isSuccess = false;
        Response.ContentType = "text/html";
        //编写Action中所需运行的代码
        if (isSuccess)
        {
            Response.Write("success");
        }
        else
        {
            Response.Write("error");
        }
    }
    因为前台的Ajax已经进行了页面跳转的处理,所以在Action中,我去掉了默认的ActionResult的返回值改为了void,交由Ajax进行页面跳转最终实现了页面跳转。