【问题标题】:How do I create an ASP.NET MVC wizard with back button support?如何创建具有后退按钮支持的 ASP.NET MVC 向导?
【发布时间】:2009-02-26 13:47:14
【问题描述】:

我正在使用 ASP.NET MVC 创建一个应用程序,并且我需要在我的一个页面上使用向导样式的界面。

这是我目前正在做的事情:
我创建了一个包含 5 个 div 的页面。所有在 css 文件中都设置了“显示:无”。当用户第一次点击页面时,我使用 jquery 来显示第一步:

$("#callStep1").show();

第一步有一个选择列表,当用户进行选择时,会执行以下代码:

$("#callStep1").hide();
$("#callStep2").show();

这一直持续到用户进入第 5 步并单击提交按钮。一切正常,除非我在第 2、3、4、5 步并点击后退按钮,当我真的只想转到上一步时,它会一直带我回到我之前所在的页面。

我怎样才能做到这一点?我看过一些使用“#”并在页面上创建链接的示例,但不确定是否有更好的方法。

有什么建议吗?

【问题讨论】:

    标签: jquery asp.net-mvc


    【解决方案1】:

    如果您在向导页面上不是绝对需要 AJAX,可以通过在表单 POST 成功后返回不同的视图来做到这一点。

    在控制器中:

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult DoSomethingLong(int somethingId, int step)
    {
      MyModelType myModel = MyModelFactory.Fetch(somethingId);
    
      switch(step)
      {
        case 1:
          return View("Step1", myModel);
          break;
        case 2:
          return View("Step2", myModel);
          break;
      }
    }
    
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult DoSomethingLong(int somethingId, int step)
    {
       MyModelType myModel = MyModelFactory.Fetch(somethingId);
    
       if (TryUpdateModel(myModel))
       {
           //Successful update.  Send to next step.
           return RedirectToAction("DoSomethingLong", new {somethingId = somethingId, step = step + 1}
       }
       else
       {
           //Update failed, redisplay current View with validation errors.
           return View(myModel);
       }
    }
    

    【讨论】:

      【解决方案2】:

      实现 Ajax 驱动的链接 完全不显眼且易于访问 方式(也称为 Hijax)与 支持浏览器的后退/前进 导航按钮和书签。 增强可比较的 DHTML 驱动链接 也是。

      http://www.stilbuero.de/jquery/history/#Chapter_3

      Hijax (wikipedia)

      【讨论】:

      • 链接坏了,有人往上面扔了些新鲜水果。
      猜你喜欢
      • 2010-10-13
      • 2010-10-02
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多