1

ページング ナビゲーションをレンダリングする ViewComponent を考えてみましょう。コンポーネントに渡されるパラメーターの 1 つは、現在の PageIndex (表示されたページのインデックス) です。

この渡された値を ViewData に入れずに ViewComponents テンプレートで使用するにはどうすればよいですか?

-- ビュー コンポーネント:

[ComponentName("GalleryPager")]
public class PagerComponent : ViewComponent
{
    [Parameter("PageIndex")]
    private int _pageIndex;

    public void Run()
    {
        ... some logic ...

        ViewData["PageIndex"] = _pageIndex; // I want to avoid this!
    }
}

-- 親ビュー:

...
<span class="paging">
    {% GalleryPager @PageIndex = SOME_VALUE %}
</span>
...

-- コンポーネント ビュー:

...
<span class="page_index">
    {{ PageIndex }} <!-- This way it's passed/used as ViewData -->
</span>
...
4

1 に答える 1

1

これは不可能だと思います。ビュー コンポーネントは、分離された方法で動作するように設計されています。これは、ビュー コンポーネントのテンプレートをレンダリングするときに、ビュー データ変数が密かに追加されないことを意味します。

これは意図した動作です。ビュー コンポーネントへの呼び出しで、すべてのパラメーターがビュー データとしてビュー コンポーネントに渡されるとしたらどうでしょうか。エンド ユーザーが独自のテンプレートを作成できるようにすると、セキュリティ ホールが発生する可能性があります。ビュー コンポーネントを呼び出して、ビュー コンポーネントに渡されたビュー データをいじることができれば、重大なセキュリティ リスクが生じる可能性があります。

于 2009-09-23T14:06:19.880 に答える