0

4 つのビュー (PersonalInfo、PostOffice、OrderDetails、Commentary) を持つ単純な Web サイトがあります。すべてのビューは、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 に答える