【问题标题】:C# .NET Call Master Page Method from Content Page in HTMLC# .NET 从 HTML 中的内容页面调用母版页方法
【发布时间】:2019-11-29 00:33:26
【问题描述】:

在我的 Site.Master Page (SiteMaster) 我有以下代码:

public string RandomString()
{
    Random random = new Random();
    return new string(Enumerable.Repeat("ABCEFG", 10)
      .Select(s => s[random.Next(s.Length)]).ToArray());
}

这应该给我一个随机字符串。 现在在我的 ContentPage.aspx 中,我想在尝试导入 Js 文件的同时调用这个函数,所以首先我在页面顶部导入了 MasterType,如下所示:

<%@ MasterType VirtualPath="~/Site.Master" %>

然后像这样导入我的js脚本:

<script type="text/javascript" src="/Scripts/Custom/myJSFILE.js?rndstr=<%= Master.RandomString(); %>"></script>

但如果我尝试运行它,我会收到以下错误:

编译处理此请求所需的资源时出错。查看以下具体错误详情并相应更改源代码。

编译器错误消息:CS1026:) 预期

但不知何故,如果我在 MasterSite.aspx 文件中这样做:

<script type="text/javascript" src="/Scripts/Custom/myJSFILE.js?rndstr=<%# RandomString() %>"></script>

它就像一个魅力。那么如何在我的内容页面中调用相同的函数呢?

【问题讨论】:

    标签: javascript c# asp.net


    【解决方案1】:

    您不能直接访问母版页,您需要为其创建一个属性,并使用它来访问方法。 Site1 是母版页的类名(public partial class Site1 : System.Web.UI.MasterPage

    public Site1 MyMaster;
    
    protected void Page_Load(object sender, EventArgs e)
    {
        MyMaster = (Site1)Page.Master;
    }
    

    然后你就可以在aspx中访问了

    <%= MyMaster.RandomString() %>
    

    【讨论】:

    • 感谢您。现在我不再收到任何错误,但不知何故它不会返回我一个随机字符串。它只是&lt;script type="text/javascript" src="/Scripts/Custom/myJSFILE.js?rndstr= 而不是像其他人那样&lt;script type="text/javascript" src="/Scripts/Custom/myJSFILE.js?rndstr=ABCDEFG
    • 它在这里工作。我在 aspx 页面上得到一个随机字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    相关资源
    最近更新 更多