web-dev-qa-db-ja.com

部分ビューから親モデルにアクセスする

新しい子エンティティを作成することを目的として、作成する部分ビューが空白であることを確認します。ダーティかどうかに関係なく、パーシャルビュー内から親モデルにアクセスする簡単な方法が必要です。親のIDが必要です。

部分ビューは自動的に親のモデルにアクセスできますか?

17
AnimaSola

レンダリング時にパラメータとしてこのパーシャルに何らかの値を渡さない限り、パーシャルビューから親モデルにアクセスすることはできません。たとえば、メインビューで:

@model MyViewModel
...
@Html.Partial("_myPartial", new ViewDataDictionary(new { id = Model.Id }));

次に、パーシャル内でIdにアクセスできます。

<div>@ViewBag.Id</div>

もちろん、これはデータを部分ビューに渡すためのかなりお粗末な方法です。正しい方法は、強く型付けされたビューモデルを使用することです。

17
Darin Dimitrov

これは私のために働いてしまいました。

@model MyViewModel
...
@Html.Partial("_myPartial", new ViewDataDictionary { { "id", Model.Id } })

そして部分ビューの中で、これを使用しました...

<div>@ViewBag.id</div>
2
JOpuckman

これは古いトピックであることは知っていますが、とにかく同じ問題に自分の解決策を追加するだけだと思っていました。少しきれいだと思います。

基本的に、モデルを部分ビューに追加します。

カプセル化ビュー:

@model whatever
...
@Html.Partial("partialview", anotherwhatever)

部分ビュー:

@model anotherwhatever
<div>@Model.something</div>
...

私の場合、部分的なビューに文字列を渡すだけでよいので(コードを短くしてパーティションに分割するために使用するだけです)、これは他のソリューションよりもはるかにエレガントでした。

私は最初に他の解決策を試しましたが、実際にはそれを機能させることができませんでした。渡した値が空白であるかのように機能しました。

2
Yushatak

モデルIEを渡すだけです。

カプセル化ビュー:

    @model MyModel
    @Html.Partial("_myPartial", Model)

部分図:

    @model MyModel
    Id = @Model.Id;
0
RC Cola