1

考虑一个呈现分页导航的 ViewComponent。传递给组件的参数之一是当前 PageIndex(查看页面的索引)。

如何在我的 ViewComponents 模板中使用这个传递的值而不将它放入 ViewData?

-- 视图组件:

[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 回答