ASP.Net seems to want to rewrite the path to point to the absolute location. For example, If the control is on [URL] the link href will be rewritten to read
Why does Asp.Net rewrite these control paths, and is there an elegant way to fix it?
I just want the anchor control to spit out exactly what I tell it to!!! Is that so hard?
EDIT:
I've basically done what Kelsey suggested. I knew I could do it this way, but I don't like adding markup in my code when I want something relatively simple. At least it solves the problem:
As you can see by the amount of code needed for what is essentially supposed to be be a simple and light-weight anchor, it's not the most optimal solution. I know I could use a Literal but I figured this was cleaner as I'm adding more than one anchor.
I have a website, lets call it mywebsite.com. I also have a blog at mywebsite.com/blog. I have made a URL rewrite rule so it can be accessed from blog.mywebsite.com. The issue is that all my root relative paths (~/) do not work when viewing the blog from blog.mywebsite.com. Ok, say if there is a link on my blog that goes to a blog post that is at ~/blog/post.aspx?id=1. It will then go to blog.mywebsite.com/blog/post.aspx?id=1 which is actually, mywebsite.com/blog/blog/post.aspx?id=1 and that does not exist.
I want to know differences between ASP.Net WebControls and Html Controls (with runat="server" attribute).
I also want to know the possible scenarios where I have to (or want to) prefer Html Controls (with runat=server) in place of asp.net server controls?
In case of some good articles on web, do forward me. But dont forward me the links with differences between webcontrols and html controls, because my question intended for runat="server" attribute.
My WebApp is part CMS, and when I serve up an HTML page to the user it typically contains relative paths in a.href and img.src attributes. I currently have them accessed by urls like: ~/get-data.aspx/instance/user/page.html -- where instance indicates the particular instance for the report and "user/page.html" is a path created by an external application that generates the content. This works pretty reliably with code in the application's BeginRequest method that translates the text after ".aspx" into a query string, then uses Context.RewritePath(). So far so good, but I've just tripped over something that took me by surprise: it appears that if any of the query string ("instance/user/page.html") happens to contain a plus sign ("+") the BeginRequest method is never called, and a 404 is immediately returned to the user.
So my question is two-fold:
Am I correct in my belief that a "+" would cause the 404, and if so are there other things that could cause similar problems? Is there a way around that problem (perhaps a different method than BeginRequest)? Is there a better way to preserve relative URL paths for generated content than what I'm using? I'd rather not require site admins to install a 3rd party rewrite tool if I can help it.
I have this problem - I'm working on an ASP.NET AJAX-application on a server without .net 3.5 which means I can't use ListView (BOO!).
I decided to simply do the ugly way of making a table and giving the tbody an ID and a runat server tag, and put HtmlControls inside from the codebehind (btw - this is a usercontrol, in case it makes a difference).
This all works fine - until the page does a partial postback - and all the elements disappear, since the tag is runat server I assume it requires to be repopulated in the page load.
Is there no way to actually persist the data on partial postback? And only have the content of the control change when I say so in the back end?
I guess I could save the content in a session object upon populating the control, and just repopulate in the Page_Load with the session object - but I was hoping there was a better way to do this?
I'm new to .net, and I've noticed that when viewing my HTML source code generated by a .net application the carriage returns are removed from the head tag when it has runat="server" attribute on it.
I remove the runat="server" and the returns... return.
This really looks nasty when you have a few javascript and css files in your header because it ends up making the entire contents of the head tag 1 big line.
Just wondering if there's a way to control this or tell .net through configuration not to mangle the output?
I have a span control which I am filling using Jquery. At the page load I want this span say id1 to be invisible and depending on some conditions I am making it visible via jquery itself.
When I make id1 runat = server and try to access id1 from codebehing, then I get an error in Jquery.
Hence I need a way to make id1 invisble at the load time itself.
I have already set id1 = invisble in HTML, But still I see this control on the page till the time jquery fills the entire data.
I am facing one asp.net server side issue using vb.net the problem is i declared one html input hidden field in my page, the name is hidden1. but when i going to call that name into server side code, that time i got the below error, <b>Name "Hidden1" is not declared</b> Code below:
where id is the datakeyname of the grid now i had a requirement to add another datakename as UserId. and i need to have DataBinder.Eval for UserId also.
How am going to use two values in this anchor tag using DataBinder.Eval?
I have created a new Web project (.Net 3.5) and I've removed the original Default page in favour of creating a Master page and then recreating a Default with Master page. All worked lovely. Now, when I add my controls inside of the ContentPlaceHolder on the Default page, I get compiler errors when I try to access the controls from the CodeFile:
Error 4 '_Default' does not contain a definition for 'FirstName' and no extension method 'FirstName' accepting a first argument of type '_Default' could be found (are you missing a using directive or an assembly reference?)
I would like to ask how can i make an html anchor (a element) or even any object to do a postback or to execute an server side method?I want to create a custom button (a wrapped with some divs to do some custom them) and i want to implement OnClick to be look like the ASP.NET LinkButton?Like<a href="#" onclick="RunServerSideMethod()">Just a simple link button</a>
I am trying to render a simple hyperlink that links to a named anchor within the page, for example:
<a href="#namedAnchor">scroll to down</a> <a name="namedAnchor">down</a>
The problem is that when I use an ASP.NET control like asp:HyperLink or HtmlAnchor, the href="#namedAnchor" is rendered as href="controls/#namedAnchor" (where controls is the subdirectory where the user control containing the anchor is). Here is the code for the control, using two types of anchor controls, which both have the same problem:
[code]....
I am using the HtmlAnchor or HyperLink class because I want to make changes to other attributes in the code behind. I do not want to introduce a custom web control for this requirement, as the requirement I'm pursuing is not that important enough to justify abandoning the traditional ASP.NET link controls. It seems like I should be able to use the ASP.NET link controls to generate the desired link.
I'm creating a custom server control which needs to take in a root-relative path for one of it's properties. I use the UrlProperty, but when I select a file in the markup, the selected path doesn't inlcude the the "~/". I'd like to mimic the behavior of a hyperlink. So let's say I have this:
<asp:HyperLink ID="HyperLink1" NavigateUrl
When I type in an equals sign after the NavigateUrl property, intellisense pops open a URL picker and I can pick from any page to produce this code:
I have a Sidemenu item in my ASP.NET application like below. There are two types of users in my application (Associates, Managers).When ever Associate Login then I have to disable Manager link. I am not able find visible property in codebehind since it is a HTML control. So need your support how to handle this