What using directive can I implement in my .cs file that will let me use the "WebPageExecutingBase.Href()" Method?

StackOverflow https://stackoverflow.com/questions/18597506

Question

I have a .cs file that generates HTML. Within it, I would like to make this code a little more fool proof by using the WebPageExecutingBase.Href() method, which I have done in many cshtml files before (mainly with the use of the tilde ~).

However, the links are broken on the generated HTML if I include just the tilde:

string html = "<a href=\"~/SomeFolder/SomeFile.cshtml\">Link</a>"; //Generates a broken link.

But I can't seem to import the appropriate using directive for use with the Href() method in the environment of a .cs file alone.

I have tried:

using System.Web;

using System.Web.WebPages;

And then trying to use WebPageExecutingBase.Href(), but while the "WebPageExecutingBase" part shows up in Intellisense, the "Href()" does not (and, in fact, generates a server-side error demanding a second 'object' argument, but I have used this same method with only one argument multiple times before).

I have tried to look up info on it here: http://msdn.microsoft.com/en-us/library/system.web.webpages.webpageexecutingbase(v=vs.111).aspx But to no avail.

I thought I had this right, but now I'm not even sure if I can use this method here at all.

Is there any way to implement the Href() method (or the same functionality therein) within HTML generated in a string in a .cs C# file?

Was it helpful?

Solution

The Href method is not intended for use in classes. You should use VirtualPathUtility instead. You will need to include a using directive for System.Web then you would do this:

string html = string.Format("<a href=\"{0}\">Link</a>", VirtualPathUtility.ToAbsolute("~/SomeFolder/Somefile.cshtml"));
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top