2017-01-26 2 views
1

Visual StudioでMVCプロジェクトを作成すると、私のためのコントローラが足場になります。詳細アクション、編集アクション、および削除アクションには、アクションの「int?id」パラメータがあります。ASP.NET Visual Studio scaffold idパラメータ

このIDはどこから由来していますか?どのIDを探すかはどのように分かりますか?そのオブジェクトに関連する主キーIDを探していることを知っていますか?

ありがとうございます!

CRUDアクションとコントローラを作成するために、足場を行うときに私の知る限り、MVCは、このような RegisterRoutes方法でデフォルトルートを探して
public ActionResult Details(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     Comment comment = db.Comments.Find(id); 
     if (comment == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(comment); 
    } 
+0

AFAIKと答えたダイアログの質問を使ってコントローラーをスキャフォールドします。コントローラーを空のアクションで選択しました。はい、それはPKを探していることを知っていて、型としてnullable intを使用します。あなたの状況に合わせて修正することができます。 –

答えて

0

私は説明しようとします。いくつかのコントローラー(空ではない)を作成するときには、いくつかのデフォルトのアクションが書き込まれます。それは以下の通りです。

インデックス - エンティティモデルのデータのリストを表示します。 作成 - 新しいオブジェクト(インスタンス)を作成し、エンティティモデルに追加することができます。 削除 - インスタンスを削除します。 詳細 - インスタンスの詳細を表示する場合は、このアクションが使用されます。パラメータは "Id"です。したがって、サーバは、Id(プライマリキー)に応じて正確なインスタンスをデータベースから取得します。だから、この行動がイドを得る方法は?答えは:ビューから。ビューから、そのインスタンスのIDを送信して、単一のインスタンスの詳細ビューを要求しています。それは理にかなっていますか?私はここにグリッド画像を添付します。 Sample Grid

右側から見ると、ペン記号とページ記号が表示されます。ページ記号は自分の詳細ボタンです。したがって、最初の行のページ記号をクリックすると、最初の名前がRupaであるインスタンスの主キーが送信され、このインスタンスの詳細データを取得するサーバーが要求されます。

希望します。

+0

ありがとう、それは多くの助けになりました。今私はそれがビューから来ていることを理解する...意味がある! – Tom

+0

絶対に私の喜び –

0

:しかし、上記のルート定義から

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapRoute(
       name: "Default", // Route name 
       url: "{controller}/{action}/{id}", // URL with parameters 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
    } 
} 

idパラメータは、オプションとして宣言され、編集または削除操作中にコントローラは、idパラメータを供給することによって、どのデータを編集/削除すべきかを知ることを要求した。

Nullable<int>背後にある理由はidパラメータを宣言するために選択されているが(Comment comment = db.Comments.Find(id)を使用して主キーの値に基づいて、データベース内のそのコントローラ検索に注意)視野側から渡された可能ヌル値に対してチェックを保証することです。

関連する問題