【问题标题】:Pass string parameters to master page将字符串参数传递到母版页
【发布时间】:2010-01-27 06:23:42
【问题描述】:

我正在使用 C# 语言 Asp.net 3.5 版我有一个母版页和他们使用母版的页面。我认为有三种方法可以实现我的应用程序,并能够在控制器到页面之间传递参数。

第一种方式: 我需要从页面传递一个字符串参数来掌握我该怎么做?
当控制器请求页面时,我将在页面之间传递一个字符串参数到主控,然后将页面传递给它的主控。

第二种方式:从控制器类传递一些字符串参数首先到母版页(不是到页,然后再到它的主页)。

第三种方式:传递给另一个必须是静态的类或字段,然后主加载它的值。

我的意思是高性能和安全性最好或可能的方式。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    假设您有一个名为 MyMaster 的 master 并带有一个公共方法“Foo”。您还有一个名为 MyPage 的页面。

    在 MyPage 实例中,您可以使用 Master 属性来检索对 master 的引用。如果你转换那个引用,你可以调用它的 Foo 方法。

    ((MyMaster)myPage.Master).Foo("some string")
    

    所以基本上,只要你可以访问一个页面实例,你就可以随时访问master的公共成员。

    【讨论】:

    • 服务器端和客户端哪个更好我需要安全和性能?
    • 这是服务器端代码。我不确定母版页甚至是客户端概念。
    【解决方案2】:

    如果您需要让 MasterPage 或应用程序中的任何其他页面可以访问某些字符串值,您可以尝试 ASP.NET 支持的众多客户端状态管理之一:

    • 查看状态
    • 控制状态
    • 隐藏字段
    • Cookie
    • 查询字符串

    查看this page,了解如何使用这些选项的详细信息并帮助您找到正确的选项:

    【讨论】:

    • 服务器端或客户端哪个更好我需要安全性和性能?
    • 我个人在这种情况下使用会话状态。它非常安全,因为它是加密的,如果你设法保持会话状态很小,那么性能应该不是问题。当您尝试存储大量数据时,它会成为性能问题。
    【解决方案3】:

    如果您尝试在服务器端执行此操作,您可以在母版页中公开一个属性。然后,“子”页面可以通过 Page.Master 属性访问该属性。

    例如:

    public partial class MyMaster : MasterPage
    {
        public string MyString { get; set; }
    }
    
    public partial class MyPage : Page  
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            ((MyMaster)(this.Master)).MyString = "some value";
        }
    }
    

    【讨论】:

    • 服务器端或客户端哪个更好我需要安全性和性能?
    • 格雷格是对的。母版页不是服务器端的概念。您将在客户端获得更好的性能,在服务器端获得更好的安全性。 Ricardo 建议使用会话状态,这也是一种可行的服务器端替代方案。无论您使用服务器还是客户端路由,很大程度上取决于您要完成的任务。如果没有更具体的例子,很难做出强烈的推荐。
    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2011-05-27
    相关资源
    最近更新 更多