如何在所有页面上的asp.net中添加相同的服务器端脚本?

时间:2014-01-15 09:02:32

标签: asp.net

我从开发人员处获取此脚本,将其放在我的网站上,以便动态更改电话号码。

    <script runat="server">
        public string getPhoneNumber()
        {
            string strPhone = "";
            if (!(Session["Phone"] == null))
            {
                strPhone = Session["Phone"].ToString();
            }
            else
            {
                searchphone.GetPhone obj = new searchphone.GetPhone();
                string strURL = HttpContext.Current.Request.Url.AbsolutePath;

                if (Request.QueryString["s"] != null && Request.QueryString["P"] != null)
                    strPhone = obj.GetPhoneNumber(Request.QueryString["s"], Request.QueryString["p"]);

                if (!string.IsNullOrEmpty(strPhone))
                    Session["Phone"] = strPhone;
                else
                    strPhone = obj.GetPhoneNumber(strURL);
            }
            return strPhone;
        }
    </script>

逻辑位于dll文件中,并且还需要在每个页面上包含一个名称空间。代码工作正常。

但我的问题是他要求我手动将这个脚本放在每个页面上。当我放置脚本并在母版页上导入命名空间并希望在内容页面上使用getphonenumber方法(&lt;%= getPhoneNumber()%&gt;)来跟踪和更改基于用户的电话号码时,它也无法正常工作会话。

此代码的目标是跟踪用户并基于此显示电话号码。我希望在全局范围内包含此脚本,以便每个页面都可以访问它并使用其getphonenumber方法。感谢。

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是将此功能放在母版页上。然后访问您页面上的功能。

母版:

public string getPhoneNumber()
{
    string strPhone = "";
    if (!(Session["Phone"] == null))
    {
        strPhone = Session["Phone"].ToString();
    }
    else
    {
        searchphone.GetPhone obj = new searchphone.GetPhone();
        string strURL = HttpContext.Current.Request.Url.AbsolutePath;

        if (Request.QueryString["s"] != null && Request.QueryString["P"] != null)
            strPhone = obj.GetPhoneNumber(Request.QueryString["s"], Request.QueryString["p"]);

        if (!string.IsNullOrEmpty(strPhone))
            Session["Phone"] = strPhone;
        else
            strPhone = obj.GetPhoneNumber(strURL);
    }
    return strPhone;
}

<%= ((MasterPageType)this.Master).getPhoneNumber() %>

其中MasterPageType是主页的类型名称。


实现此目的的另一种方法是创建一个静态类(新文件):

静态类

public static class SessionTools
{
    public static string getPhoneNumber()
    {
        string strPhone = "";
        if (!(HttpContext.Current.Session["Phone"] == null))
        {
            strPhone = HttpContext.Current.Session["Phone"].ToString();
        }
        else
        {
            searchphone.GetPhone obj = new searchphone.GetPhone();
            string strURL = HttpContext.Current.Request.Url.AbsolutePath;

            if (HttpContext.Current.Request.QueryString["s"] != null && HttpContext.Current.Request.QueryString["P"] != null)
                strPhone = obj.GetPhoneNumber(HttpContext.Current.Request.QueryString["s"], HttpContext.Current.Request.QueryString["p"]);

            if (!string.IsNullOrEmpty(strPhone))
                HttpContext.Current.Session["Phone"] = strPhone;
            else
                strPhone = obj.GetPhoneNumber(strURL);
        }
        return strPhone;
    }
}

<%= SessionTools.getPhoneNumber() %>