0

A 有一个简单的网站,有 4 个视图(PersonalInfo、PostOffice、OrderDetails、Commentary)。所有视图都被强类型化为名为 Information 的模型。我需要做的是:

  • 当我单击 PersonalInfo 视图中的下一步按钮时,我需要将一些数据存储到会话中
  • 之后,我必须被重定向到下一个视图,OrderDetails

下面是我如何尝试解决问题的示例,但它不起作用

控制器:

public ActionResult PersonalInfo(string button, Models.Information FirstName, Models.Information LastName)
    {
        if (button == "Next")
        {
            HttpContext.Session["FirstName"] = FirstName;
            HttpContext.Session["LastName"] = LastName;

            return RedirectToAction("PostOffice", "Home");
        }
        else if (button == "Back")
        {
            return RedirectToAction("OrderDetails", "Home");
        }
        return View();
    }

视图中的按钮:

<div>
<button name="button" value="Next">Next</button>
<button name="button" value="Back">Back</button></div>

模型属性:

//Firstname validation
    [Required(ErrorMessage = "Required field.")]
    [Display(Name = "First name:")]
    [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Use letters only.")]
    public string FirstName { get; set; }

    //Lastname validation
    [Required(ErrorMessage = "Required field.")]
    [Display(Name = "Last name:")]
    [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Use letters only.")]
    public string LastName { get; set; }
4

1 回答 1

1

听起来您甚至没有生成执行PersonalInfo操作的请求。

让您的按钮改为提交按钮

<input type="submit" name="button" value="Prev" />
<input type="submit" name="button" value="Next" />

我假设你的表单动作是PersonalInfo

在您的控制器操作中,使用TempData而不是Session将信息传递给重定向的操作,以便数据仅保留到下一个请求。

TempData["FirstName"] = FirstName;
TempData["LastName"] = LastName;

最后,asp.net mvc(拆分视图模型,单一模型)中的多步注册过程问题可能会帮助您,因为您正在进行多步表单处理。

于 2013-04-12T19:20:17.350 回答