ホーム>source

私が達成しようとしていること:
1.フォームに記入する
2.データベースに保存する
3.いくつかの詳細(referenceID)を表示する別のビューにユーザーをリダイレクトします

ここに私が持っているものがあります

コントローラ:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ClearanceViewModel myViewModel, TClearance clearance, TRefsNum referenceNo)
{
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  var stringChars = new char[8];
  var random = new Random();
  for (int i = 0; i < stringChars.Length; i++)
  {
      stringChars[i] = chars[random.Next(chars.Length)];
  }
  var finalString = new String(stringChars);
  string refNo = DateTime.Now.Year + finalString;
  items.RefNum = refNo;

  db.TClearances.Add(items);
  db.SaveChanges();
  return RedirectToAction(items.RefNum, "displayRef");
}

上記のコードは、ユーザーが入力したものをデータベースに保存し、「displayRef」を表示するようにリダイレクトします。items.refNumは、viewに渡そうとしている値です

見る:

@model RDMSPNPOnlineClearance.Models.TClearance
@{
    var getRef = Model.RefNum;
}
this is your ref number: @Html.LabelFor(model => model.RefNum, htmlAttributes: new { @class = "control-label" })

上記のコードは、期待値「items.refNum」を取得し、その値を使用してユーザーに表示しようとしています。

実際に起こっているのは、ユーザーがいっぱいになり、dbに保存してから、「displayRef」ビューにリダイレクトされることです。部品を保存しても問題ありません。問題は、displayRefビューでrefNumを取得していないことです。 URLは次のように変更されます。 Localhost:55433/items.refNum/view

だから、どのようにその値をユーザーに表示するのですか?

あなたの答え
  • 解決した方法 # 1

    RedirectToAction が必要ですか ?ビューを返すだけではいけませんか...

    return View("displayRef", items.RefNum);
    
    

    RedirectToAction を使用する必要がある場合 、これはコントローラーアクションにリダイレクトしていることを意味し、次のように指定する必要があります...

    return RedirectToAction("Action","controller", new {@id=id});
    
    

    また、ビュー内のモデルが正しくありません、あなたは string をバインドしています  refNo、ただしビューの上部に、クラス RDMSPNPOnlineClearance.Models.TClearance をバインドすることを示す

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Python - Python:二分木の枝の合計を計算する