如果直接请求,是否可以阻止某些PartialViews被提供?

时间:2010-07-23 07:58:21

标签: asp.net-mvc routing partial-views

我正在开发一个网站,该网站包含呈现部分视图的操作的路径。很多这些部分视图是组成一个完整页面的组件。

例如,在我正在处理的搜索页面上有一个文本框,一个选项卡列表和一个表格。

可以使用类似于

的URL访问这些内容
/Search/SearchPanel
/Search/Tabs/{SearchTerm}
/Search/ResultsTable/SearchTerm?tab=[currently selected tab]

这些都是在我的索引页面上使用RenderPartial渲染的。

当页面加载时,它将按照我想要的方式显示每个组件。但目前没有什么能阻止用户直接进入网址

/Search/Tabs

仅呈现一个标签控件,该控件在页面上其余元素的上下文之外毫无意义。

我有办法阻止这种情况吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试将Controller方法标记为private

private PartialViewResult MyPartialResultMethod()

这应该允许您在代码中调用它来构建您的页面并禁止任何公共访问,例如通过URl。

我现在正在对此进行测试,以确保我的答案是正确的,所以我会在测试时更新。

在您的标签示例中,您可以通过对私有标签使用第二种控制器方法来限制访问。

所以你有一些看起来像:

public ActionResult Tabs(string searchTerm) // When a search term is passed.

private ActionResult Tabs() // When no search term is passed.

答案 1 :(得分:0)