我正在开发一个网站,该网站包含呈现部分视图的操作的路径。很多这些部分视图是组成一个完整页面的组件。
例如,在我正在处理的搜索页面上有一个文本框,一个选项卡列表和一个表格。
可以使用类似于
的URL访问这些内容/Search/SearchPanel
/Search/Tabs/{SearchTerm}
/Search/ResultsTable/SearchTerm?tab=[currently selected tab]
这些都是在我的索引页面上使用RenderPartial渲染的。
当页面加载时,它将按照我想要的方式显示每个组件。但目前没有什么能阻止用户直接进入网址
/Search/Tabs
仅呈现一个标签控件,该控件在页面上其余元素的上下文之外毫无意义。
我有办法阻止这种情况吗?
答案 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)