代码之家  ›  专栏  ›  技术社区  ›  DaveDev

如果直接要求,我是否可以阻止某些部分观点得到满足?

  •  0
  • DaveDev  · 技术社区  · 14 年前

    我正在一个网站上工作,该网站提供了部分视图的操作路线。许多这些局部视图都是组成完整页面的组件。

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

    可以使用类似于

    /Search/SearchPanel
    /Search/Tabs/{SearchTerm}
    /Search/ResultsTable/SearchTerm?tab=[currently selected tab]
    

    这些都是在我的索引页上用renderpartial呈现的。

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

    /Search/Tabs
    

    只呈现在页上其余元素上下文之外毫无意义的选项卡控件。

    我有办法阻止这一切吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Jamie Dixon    14 年前

    您是否尝试将控制器方法标记为 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.
    
        2
  •  0
  •   PatrickSteele    14 年前

    您可以创建一个actionfilter来检查request.isajaxrequest()是否为真。如果不是(意味着用户直接调用视图),则相应地重新定向。