考虑一个呈现分页导航的ViewComponent。传递给组件的参数之一是当前PageIndex(查看页面的索引)。
如何在ViewComponents模板中使用此传递的值而不将其放入ViewData?
- ViewComponent:
[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>
...
答案 0 :(得分:1)
我担心这是不可能的。视图组件的设计是以隔离的方式运行,这意味着在渲染视图组件的模板时不会秘密添加视图数据变量。
这是预期的行为。如果对视图组件的调用将所有参数作为视图数据传递给视图组件,该怎么办?当您允许最终用户创建自己的模板时,这可能会造成安全漏洞。如果他们可以调用视图组件并弄乱传递给视图组件的视图数据,则可能会产生严重的安全风险。