从子页面 .ASPX 页面访问代码背后的母版代码
Accessing masterpage code behind code from a child pages .ASPX page
我想在我的母版页后面的代码中执行代码,并在 Default.aspx
等子页面的 .aspx 页面上使用它,而不必通过 Default.aspx.cs
调用它页。
这是我尝试像这样访问它<% MasterPage.getPlanCost() %>
,但是,这不起作用。因为 getPlanCost()
没有“定义”
后面的母版页代码:
public string getPlanCost()
{
var country = getCountry();
string gbp = "£5.99";
string euro = "€6.99";
string usd = ".99";
var currencyCost = usd;
if (country == "United Kingdom") // gbp
{
currencyCost = gbp;
}
else if (country == "United States" || country == "Canada" || country == "Australia" || country == "New Zealand") // usd
{
currencyCost = usd;
}
else // euro
{
currencyCost = euro;
}
return currencyCost;
}
Default.aspx 页数:
<p class="text-center under-title text-muted"><%=MasterPage.getPlanCost() %> Cancel Anytime.</p>
实现此目标最快/最有效的方法是什么?此外,我尝试使用在 Whosebug 上看到的替代方法,使用 get
和 set
但是我无法使它正常工作。对 C# 还很陌生,所以我深表歉意。
对于任何想知道的人,我创建了一个名为 Utilities.cs
的 class
然后直接从我的 Default.aspx 页面调用它。
<%=Utilities.getPlanCost()%>
我还要感谢@Joel Coehoorn 的评论,他的评论让我走到了一半。
虽然您找到了解决方法,但可以从子 Web 表单访问母版页方法,这在希望您的子页面以某种方式影响母版页的情况下很有用。您可以通过 Page.Master
属性 执行此操作,但您首先必须注册或转换类型。
方法一:注册Master类型
网络表单:
<%@ Page Language="C#" MasterPageFile="~/Example.Master" ... %>
<%@ MasterType VirtualPath="~/Example.Master" %>
隐藏代码:
Page.Master.getPlanCost();
方法二:铸造大师属性
隐藏代码:
((Example)Page.Master).getPlanCost();
我想在我的母版页后面的代码中执行代码,并在 Default.aspx
等子页面的 .aspx 页面上使用它,而不必通过 Default.aspx.cs
调用它页。
这是我尝试像这样访问它<% MasterPage.getPlanCost() %>
,但是,这不起作用。因为 getPlanCost()
后面的母版页代码:
public string getPlanCost()
{
var country = getCountry();
string gbp = "£5.99";
string euro = "€6.99";
string usd = ".99";
var currencyCost = usd;
if (country == "United Kingdom") // gbp
{
currencyCost = gbp;
}
else if (country == "United States" || country == "Canada" || country == "Australia" || country == "New Zealand") // usd
{
currencyCost = usd;
}
else // euro
{
currencyCost = euro;
}
return currencyCost;
}
Default.aspx 页数:
<p class="text-center under-title text-muted"><%=MasterPage.getPlanCost() %> Cancel Anytime.</p>
实现此目标最快/最有效的方法是什么?此外,我尝试使用在 Whosebug 上看到的替代方法,使用 get
和 set
但是我无法使它正常工作。对 C# 还很陌生,所以我深表歉意。
对于任何想知道的人,我创建了一个名为 Utilities.cs
的 class然后直接从我的 Default.aspx 页面调用它。
<%=Utilities.getPlanCost()%>
我还要感谢@Joel Coehoorn 的评论,他的评论让我走到了一半。
虽然您找到了解决方法,但可以从子 Web 表单访问母版页方法,这在希望您的子页面以某种方式影响母版页的情况下很有用。您可以通过 Page.Master
属性 执行此操作,但您首先必须注册或转换类型。
方法一:注册Master类型
网络表单:
<%@ Page Language="C#" MasterPageFile="~/Example.Master" ... %>
<%@ MasterType VirtualPath="~/Example.Master" %>
隐藏代码:
Page.Master.getPlanCost();
方法二:铸造大师属性
隐藏代码:
((Example)Page.Master).getPlanCost();