0

外部キーを持つモデルの作成方法が正確にわかりません。モデルに外部キーを渡す必要がありますが、これを処理する最善の方法がわかりません。

エンティティ フレームワークのドキュメントのブログ/投稿の例を使用する場合:

投稿モデルをビューに渡します。

@model BlogApp.Models.Post

モデルの保存の一環として、BlogId を入力します。これは非表示のフィールドですが、概念的には次のようになります。

<div class="editor-label">
    @Html.LabelFor(model => model.BlogId)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.BlogId)
    @Html.ValidationMessageFor(model => model.BlogId)
</div>

Post BlogId フィールドに保存できるように、現在のブログ モデルからブログ ID を渡すにはどうすればよいですか?

私が考えることができるオプション。

  1. 投稿でブログ ID を取得 Get create し、それを ViewBag に渡します。

  2. blog/2/post/create/3 のようなルーティング ルールを追加し、2 を取得して blogId として使用します。

  3. セッション変数で BlogId を設定し、Post create コントローラーの投稿に設定します。

上記のベスト プラクティスの 1 つですか、それとも私が認識していない別のオプションがありますか?

4

1 に答える 1

0

ワークフローでは、ブログを選択した後にブログ投稿の作成が行われます。したがって、URLを変更して、クエリ文字列変数として使用できます。

/post/create?blogId=1

PostコントローラーのCreateアクションは次のようになります。

    [HttpGet]
    public AcionResult Create(int blogId ){
        var post=new Post{BlogId=blogId}
        return view (post); 
    }

これが最も簡単でクリーンな方法だと思います。

于 2012-12-20T03:59:44.007 に答える