ASCX - Function Not Being Called

G

George Durzi

I created a simple user control which contains a hyperlink to link the user
to a topic in a compiled help file. I named all my help topics to have the
same name as the aspx they are for.

So in the user control help.ascx's html, I have this:
<a href='<%# GenerateHelpLink()%>' class="mischrefcontent2" id="hrfHelp"
runat="server" target="_blank">Help</a>

In the codebehind help.ascx.cs, I have this:
#region GenerateHelpLink
protected void GenerateHelpLink()
{
StringBuilder sb = new StringBuilder();
sb.Append("ms-its:");

sb.Append(ConfigurationSettings.AppSettings["ApplicationURL"].ToString());
sb.Append(ConfigurationSettings.AppSettings["HelpFile"].ToString());
string[] arScript =
Request.ServerVariables["SCRIPT_NAME"].ToString().Split("/".ToCharArray());
string sScript = arScript[arScript.GetUpperBound(0)].ToString();
sb.Append(sScript.Substring(0, sScript.LastIndexOf(".")));
sb.Append(".htm");

// you can ignore these details - this function simply returns a help
URL

return sb.ToString();
}
#endregion

So if I'm at cs_completed.aspx, the above function will return:
ms-its:http://gdurzi/framework/help/MyFelpFile.chm::/cs_completed.htm

In cs_completed.aspx, I do this:
<%@ Register TagPrefix="framework" TagName="help" Src="ascx\help.ascx" %>
and
<framework:help id="_help" runat="server"></framework:help>

The text Help (what's inside the <a></a>) is displayed, but the hyperlink
doesn't work. Upon debugging, I realized the function GenerateHelpLink is
never being called ...

I want to accomplish this without having to write code into every page to
call this function. I just wanted to plop the user control in there and let
it do it's work.. Any idea?
 
M

Marina

Instead of using an <a> tag, I would use a Hyperlink control.

Then in page_load do something like:

Hyperlink1.NavigationURL = GenerateHelp();
 
G

George Durzi

I would have to put code in the Page_Load of every ASPX page in my
application. I am trying to avoid that.

Any idea why the GenerateHelpLink() function doesn't get called though? It
doesn't make a diff if I use an <a> or a <asp:hyperlink>

Marina said:
Instead of using an <a> tag, I would use a Hyperlink control.

Then in page_load do something like:

Hyperlink1.NavigationURL = GenerateHelp();

George Durzi said:
I created a simple user control which contains a hyperlink to link the user
to a topic in a compiled help file. I named all my help topics to have the
same name as the aspx they are for.

So in the user control help.ascx's html, I have this:
<a href='<%# GenerateHelpLink()%>' class="mischrefcontent2" id="hrfHelp"
runat="server" target="_blank">Help</a>

In the codebehind help.ascx.cs, I have this:
#region GenerateHelpLink
protected void GenerateHelpLink()
{
StringBuilder sb = new StringBuilder();
sb.Append("ms-its:");

sb.Append(ConfigurationSettings.AppSettings["ApplicationURL"].ToString());
sb.Append(ConfigurationSettings.AppSettings["HelpFile"].ToString());
string[] arScript =
Request.ServerVariables["SCRIPT_NAME"].ToString().Split("/".ToCharArray());
string sScript = arScript[arScript.GetUpperBound(0)].ToString();
sb.Append(sScript.Substring(0, sScript.LastIndexOf(".")));
sb.Append(".htm");

// you can ignore these details - this function simply returns a help
URL

return sb.ToString();
}
#endregion

So if I'm at cs_completed.aspx, the above function will return:
ms-its:http://gdurzi/framework/help/MyFelpFile.chm::/cs_completed.htm

In cs_completed.aspx, I do this:
<%@ Register TagPrefix="framework" TagName="help" Src="ascx\help.ascx" %>
and
<framework:help id="_help" runat="server"></framework:help>

The text Help (what's inside the <a></a>) is displayed, but the hyperlink
doesn't work. Upon debugging, I realized the function GenerateHelpLink is
never being called ...

I want to accomplish this without having to write code into every page to
call this function. I just wanted to plop the user control in there and let
it do it's work.. Any idea?
 
M

Marina

No, you would need to put this code into Page_Load of the user control, not
the page.

I don't think the <%# %> tags work that way if it's not part of databinding
code. If you did something like <% Response.Write(GenerateHelp()); %> that
would probably do it.

But this is doing it the old fashioned ASP way. I think putting all this
type of code into Page_Load is a much neater way to do it. It follows the
idea of separating UI and code that ASP.NET introduces.

George Durzi said:
I would have to put code in the Page_Load of every ASPX page in my
application. I am trying to avoid that.

Any idea why the GenerateHelpLink() function doesn't get called though? It
doesn't make a diff if I use an <a> or a <asp:hyperlink>

Marina said:
Instead of using an <a> tag, I would use a Hyperlink control.

Then in page_load do something like:

Hyperlink1.NavigationURL = GenerateHelp();

George Durzi said:
I created a simple user control which contains a hyperlink to link the user
to a topic in a compiled help file. I named all my help topics to have the
same name as the aspx they are for.

So in the user control help.ascx's html, I have this:
<a href='<%# GenerateHelpLink()%>' class="mischrefcontent2" id="hrfHelp"
runat="server" target="_blank">Help</a>

In the codebehind help.ascx.cs, I have this:
#region GenerateHelpLink
protected void GenerateHelpLink()
{
StringBuilder sb = new StringBuilder();
sb.Append("ms-its:");

sb.Append(ConfigurationSettings.AppSettings["ApplicationURL"].ToString());
sb.Append(ConfigurationSettings.AppSettings["HelpFile"].ToString());
string[] arScript =
Request.ServerVariables["SCRIPT_NAME"].ToString().Split("/".ToCharArray());
string sScript = arScript[arScript.GetUpperBound(0)].ToString();
sb.Append(sScript.Substring(0, sScript.LastIndexOf(".")));
sb.Append(".htm");

// you can ignore these details - this function simply returns a help
URL

return sb.ToString();
}
#endregion

So if I'm at cs_completed.aspx, the above function will return:
ms-its:http://gdurzi/framework/help/MyFelpFile.chm::/cs_completed.htm

In cs_completed.aspx, I do this:
<%@ Register TagPrefix="framework" TagName="help" Src="ascx\help.ascx" %>
and
<framework:help id="_help" runat="server"></framework:help>

The text Help (what's inside the <a></a>) is displayed, but the hyperlink
doesn't work. Upon debugging, I realized the function GenerateHelpLink is
never being called ...

I want to accomplish this without having to write code into every page to
call this function. I just wanted to plop the user control in there
and
let
it do it's work.. Any idea?
 
G

George Durzi

Thank you, that worked. For some reason I thought the Page_Load event of the
user control wouldn't fire.

Marina said:
No, you would need to put this code into Page_Load of the user control, not
the page.

I don't think the <%# %> tags work that way if it's not part of databinding
code. If you did something like <% Response.Write(GenerateHelp()); %> that
would probably do it.

But this is doing it the old fashioned ASP way. I think putting all this
type of code into Page_Load is a much neater way to do it. It follows the
idea of separating UI and code that ASP.NET introduces.

George Durzi said:
I would have to put code in the Page_Load of every ASPX page in my
application. I am trying to avoid that.

Any idea why the GenerateHelpLink() function doesn't get called though? It
doesn't make a diff if I use an <a> or a <asp:hyperlink>

Marina said:
Instead of using an <a> tag, I would use a Hyperlink control.

Then in page_load do something like:

Hyperlink1.NavigationURL = GenerateHelp();

I created a simple user control which contains a hyperlink to link the
user
to a topic in a compiled help file. I named all my help topics to
have
the
same name as the aspx they are for.

So in the user control help.ascx's html, I have this:
<a href='<%# GenerateHelpLink()%>' class="mischrefcontent2" id="hrfHelp"
runat="server" target="_blank">Help</a>

In the codebehind help.ascx.cs, I have this:
#region GenerateHelpLink
protected void GenerateHelpLink()
{
StringBuilder sb = new StringBuilder();
sb.Append("ms-its:");
sb.Append(ConfigurationSettings.AppSettings["ApplicationURL"].ToString());
sb.Append(ConfigurationSettings.AppSettings["HelpFile"].ToString());
string[] arScript =
Request.ServerVariables["SCRIPT_NAME"].ToString().Split("/".ToCharArray());
string sScript = arScript[arScript.GetUpperBound(0)].ToString();
sb.Append(sScript.Substring(0, sScript.LastIndexOf(".")));
sb.Append(".htm");

// you can ignore these details - this function simply returns a help
URL

return sb.ToString();
}
#endregion

So if I'm at cs_completed.aspx, the above function will return:
ms-its:http://gdurzi/framework/help/MyFelpFile.chm::/cs_completed.htm

In cs_completed.aspx, I do this:
<%@ Register TagPrefix="framework" TagName="help"
Src="ascx\help.ascx"
%>
and
<framework:help id="_help" runat="server"></framework:help>

The text Help (what's inside the <a></a>) is displayed, but the hyperlink
doesn't work. Upon debugging, I realized the function
GenerateHelpLink
is
never being called ...

I want to accomplish this without having to write code into every
page
to
call this function. I just wanted to plop the user control in there and
let
it do it's work.. Any idea?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,767
Messages
2,569,570
Members
45,045
Latest member
DRCM

Latest Threads

Top