我希望在我的母版页上执行我的代码中的代码,并在 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 = "$8.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>
实现这一目标的最快/最有效方法是什么?此外,我尝试使用在 StackOverflow 上看到的替代方法,使用 get
和 set
但是我无法让它工作。对 C# 相当陌生,所以我很抱歉。
答案 0 :(得分:2)
尽管您已经找到了一种解决方法,但可以从子 Web 表单访问母版页方法,这在希望您的子页面以某种方式影响母版页的情况下非常有用。您可以通过 Page.Master
属性执行此操作,但您首先必须注册类型或强制转换。
方法一:注册主类型
网络表单:
<%@ Page Language="C#" MasterPageFile="~/Example.Master" ... %>
<%@ MasterType VirtualPath="~/Example.Master" %>
背后的代码:
Page.Master.getPlanCost();
方法二:铸造主属性
背后的代码:
((Example)Page.Master).getPlanCost();
答案 1 :(得分:0)
对于任何想知道的人,我创建了一个名为 Utilities.cs 的类
然后直接从我的 Default.aspx 页面从这里调用它。
<%=Utilities.getPlanCost()%>
我还要感谢@Joel Coehoorn 的评论,这让我走到了一半。