0

テーブルをモデル化する 2 つの独立したクラスがあります。まず、新しいユーザーが作成されたとき、そのユーザーは証明書テーブルにレコードを持っていません。そのため、証明書のビューに、この新しいユーザーの証明書の詳細を追加するボタンを追加しました。これはユーザー ビューのコードです。シンプルにするために、ページング/検索およびフィルター コードを省略しました。

public ActionResult Index()
var recipients = from s in db.User
                         select s;
 return View(recipients.ToList());

これは、関連データを示す詳細ビューです。

   public ViewResult Details(int id)
   {

   var certificateDetails = db.Certificate.Where(p => p.ID == id);
   return View(certificateDetails);
   }

新しいユーザーを追加すると、新しい証明書の詳細も追加されます。ユーザーが特定のユーザーの詳細をクリックしたときに、それらの詳細が User.ID と CertificateID の両方が設定された証明書ビューの作成にリダイレクトされない場合に必要です。実際、CertificateID は AI ですが、ユーザーからの ID は外部キーです。私は Fluent API を使用していましたが、それも得意ではないので、この一見小さな課題をコードで処理する必要があります。

4

1 に答える 1

1

私があなたの質問を正しく理解していれば、Details() を表示したときに、証明書の詳細が存在しない場合はページにリダイレクトして作成するようにしたいですか?

エンティティが存在するかどうかを確認するだけです。そうでない場合は、RedirectToAction()を返し、必要なデータをルート データ コレクションに渡します。

public ViewResult Details(int id)
{
    var certificateDetails = db.Certificate.FirstOrDefault(p => p.ID == id);

    if (certificateDetails == null)
        return RedirectToAction("Create", "Certificate", new { userId = id });

    return View(certificateDetails);
}

Create() アクションを使用して証明書コントローラーを作成する必要もあります。

于 2012-11-28T07:53:44.487 に答える