ASP.Net WebForms requiredfieldvalidator not working in FireFox? - asp.net

I have a WebForms app that uses a field validator on a dropdownlist. It works in IE but not FireFox.
This is pretty straightforward stuff I'm doing. Here are the setups for the dropdown and validator:
<asp:DropDownList ID ="dmbFileActNo" runat="server" CssClass="DROPDOWN_MEDIUM" AutoPostBack="True"></asp:DropDownList>
<asp:requiredfieldvalidator EnableClientScript="true" id="rfvFileActNo" Display="None" ControlToValidate="dmbFileActNo" Runat="server" InitialValue="-1"></asp:requiredfieldvalidator>
I'm running ASP.Net 2.0 on the web server. Javascript is enabled on the FireFox browser-- this problem happens on all FF browsers I've tested, on multiple everyday machines, so I don't believe it's due to a locked down install.

Client-side validation may not work in all browsers and in all scenarios. It's important to make sure that you always do validation on the server as well.
You may also want to take a look at what the DetermineRenderUpLevel() method on your validation control is returning in FF. Behind the scenes, it checks to see that the following are true:
The browser has client script
enabled.
The W3CDomVersion property of the
HttpBrowserCapabilitiesBase object
that is stored in the
HttpRequest.Browser property is 1 or
later.
The EcmaScriptVersion property of the
HttpBrowserCapabilitiesBase object
that is stored in the
HttpRequest.Browser property is 1.2
or later.

I got this working by modifying the web.config. As it turns out, someone had <xhtmlConformance mode="Legacy"/> in there, which is an older setting (the current default is "transitional"). Thanks for everyone's help.

Sometimes ASP.net sends different HTML/ javascript to different browsers. Check your browsercap file/settings

I have faced this problem and it was a problem of using the point character "." inside the id property of controls

Related

Can't reference controls in code behind. Visual Studio 2012

There are quite a few questions out there regarding this (for me, recurring) issue, but none of them have solved my problem.
Problem:
Whatever control I add in my aspx page, it is not recognised in the codebehind. Compiling doesn't work, because the ID is not recognised.
None of the following worked:
Clean and rebuild solution.
Close and open VS
Delete asp.net temp files
Check project's target framework.
Check assemblies are all there.
Check designer viewn to see if the control is actually there (it is)
Get control's ID with JS function to check it is the intended one (it is)
The problem has started only recently. In fact, I can reference the older controls fine.
The problem is observed both with standard ASP controls and Telerik ones.
Does anyone know of something else I should try? Please help me, I'm in the middle of a project and this is causing unnecessary delays, ta.
Make sure all of your asp.net controls (in the .aspx file) have the:
runat='server'
tag... Without this, you will not be able to reference the controls.
e.g.
<asp:Label runat='server' Text='Test Label' ID='TestLabel' />
Hope this helped...
Rodit
This is how I solved my issue. For a full account of it, please refer to the comments above.
I've noticed that although my project was already of web application type, designer files weren't showing.
I've forced the designer files to be recompiled by clicking on the ''convert to web application' option
I was then able to reference the control ID.
Thanks to the commentators anyway.
I was having a similar issue, due to the fact that I was using the pre-generated Login page. My solution was to change this section from this:
<asp:Login runat="server" ViewStateMode="Disabled" RenderOuterTable="false">
<LayoutTemplate>
To this:
<asp:Login ID="asplogin" runat="server" ViewStateMode="Disabled" RenderOuterTable="false">
<LayoutTemplate>
basically, I just added an ID to the asp:Login which allowed me to access the objects in the code from behind by prefixing the control name with asplogin
asplogin.youControlNameHere

Is this asp compiled somehow?

I have an aspx document (I know nothing about asp, .net, aspx, nada). It is a normal html table structure for the most part, but there are strings of asp that seem to be inserting some sort of dynamic content. They are in the form:
<asp:Image ID="imgTopImage" runat="server" ImageUrl="~/Images/topbar.jpg" />
<asp:Label ID="lblStyleCaption" runat="server" CssClass="label_caption" Text="Theme: " Visible="false" />
<asp:DropDownList ID="dropStyles" Width="150" runat="server" AutoPostBack="true" />
It seems that whenever I delete one of these——something as innocuous as, say, the line with the asp:Image tag, which I would think should just remove the image, when I load the page I get run-time errors. It's very particular. My question is, is this compiled somehow, which is making it so fragile. Even just changing the topbar.jpg to something.png gives me an error. Do I need to track down the original files this was compiled from, or is this normal server-side asp(x?) that I'm just somehow else goofing up my changes to?
ASPX pages are compiled, and those tags refer to objects that are known to the server, so removing them could cause errors.
First, some basics in layman's terms
Tags that begin with ASP: (Example, <ASP:Button id="btnSubmit" runat="Server" Text="Click Me" />)
are not standard html buttons. They are server controls. When generating the html that goes out to the browser, the ASP.NET runtime looks at the server controls and creates the appropriate content depending on the browser visiting the page.
In the case of the Button control, it's usually a standard html button, but the runtime also generates the JavaScript and such to handle the button's server-side click event.
Why you're probably seeing errors when you remove a control:
Quite often, there's server-side code that's written that accesses these controls. For example, the developer may have decided to change the Text or the Visible property due to some event.
If this is the case, and you remove the <asp:Button> tag, then there will be server-side code that references an object that no longer exists in the aspx page, hence the errors.
More at these links on Server Controls:
http://www.w3schools.com/aspnet/aspnet_controls.asp
(Actually, this older one is better for a new-to-asp.net developer: http://msdn.microsoft.com/en-us/library/zsyt68f1(VS.71).aspx
http://support.microsoft.com/kb/306459
I'd also recommend taking some time watching basic videos or going through the tutorials at http://www.asp.net/get-started
I just noticed this in your question:
Even just changing the topbar.jpg to something.png gives me an error.
That is a bit odd, but I know of at least one way it could happen...
Generally, Visual Studio will give you a warning (and not an error) if you include a relative URL to an image or a linked page that doesn't exist. The warning shouldn't block you from compiling. However, Visual Studio does have a setting that tells it to treat warnings as errors. That will block it from compiling. Here's how that would be set up:
from Project Settings> Configuration Properties select the build
setting and change the “treat warnings as errors” settings to true.
If you wish to NOT treat warnings as errors, simply change the setting to false.

FireFox and AjaxControlToolKit Combobox

I'm using the .NET framework 4.0 and the corresponding version of the Ajax control toolkit.
On my page I have a combobox defined like this:
<asp:ComboBox ID="cbUserName" AutoCompleteMode="SuggestAppend"
CaseSensitive="false" runat="server" BackColor="#FFFFCC">
</asp:ComboBox>
In IE9 the combobox allows me to either type in it or select from the list of users. In FireFox, however, it's not letting me type in the box. The dropdownlist also doesn't filter when I'm typing in FireFox either. I'm wondering if anyone else has seen this behavior, and if there's a work-around?
EDIT
For what it's worth, the demo on the ASP.NET Ajax Control Toolkit site actually works fine in FireFox.
I was also getting the problem of not being able to enter text into a Combobox in FireFox, but I could in IE and Chrome. After a day of looking into the problem I found that setting the MaxLength property to something greater than 0 allowed FireFox to accept entry in the text field for the combobox.
I hope this helps someone having the same problem.
ddlBox.SelectedIndex = 0
Until the latest iteration of Ajax control toolkit, I didn't need to set that. But then I updated, and I couldn't type into the empty text box, which used to be displayed with the first item. So I added that code and it works fine again.
The similar issue has been reported here, make sure you used the same version of firefox and toolkit. If not try to upgrade them and again try.
<ajaxToolkit:ComboBox ID="ComboBox1" runat="server" DropDownStyle="DropDownList" AutoCompleteMode="SuggestAppend" CssClass="" AppendDataBoundItems="false">
<asp:ListItem>Fox</asp:ListItem>
</ajaxToolkit:ComboBox>
This worked for me in firefox.
Im not sure if you mistaking the ability to type but a combobox will only allow you to type out the ListItems. so in this case it will only allow you to type out Fox..
I experienced the same problem. I couldn't find an elegant solution online so I built my own AjaxControlToolkit.dll from two different sets of the toolkit source code.
I used everything from the latest release except for I replaced ComboBox.cs and ComboBox.pre.js with their versions from AjaxControlToolkit_8502f32ba9ce. (~July 2011)
Try using:
ajaxToolkit:ComboBox ID="ComboBox1" runat="server" DropDownStyle="DropDownList"
AutoCompleteMode="SuggestAppend" CssClass="" AppendDataBoundItems="false"
MaxLength="100"

ASP.Net HyperLink control enabled propery is not working in IE 8 compatibility mode?

We have following ASP.Net 2.0 HyperLink Control:
asp:HyperLink ID="FolderLink" runat="server" CssClass="cursor" Enabled="false"
ImageUrl="/_layouts/1033/images/selectlink.gif" ToolTip="Folder Links">
On server side, following script is attached:
FolderLink.Attributes.Add("onclick", "javascript:setURL('Control');");
Issue is that HyperLink Control is disbale in IE 8 but not in IE compatibility mode. Any help?
For one, it should be this, don't put javascript: in onclick
FolderLink.Attributes.Add("onclick", "setURL('Control');");
But its not clear to me what this setURL() function has to do with your question.
If you don't want your onclick to be called then why are you adding it in the first place? If you explain the problem better you'll get a better answer.

ASP.NET inline code in a server control

Ok, we had a problem come up today at work. It is a strange one that I never would have even thought to try.
<form id="form1" runat="server" method="post" action="Default.aspx?id=<%= ID %>" >
Ok, it is very ugly and I wouldn't have ever tried it myself. It came up in some code that was written years ago but had been working up until this weekend after a bunch of updates were installed on a client's web server where the code is hosted.
The actual result of this is the following html:
<form name="form1" method="post" action="Default.aspx?id=<%= ID %>" id="form1">
The url ends up like this:
http://localhost:6735/Default.aspx?id=<%= ID %>
Which as you can see, demonstrates that the "<" symbol is being encoded before ASP.NET actually processes the page. It seems strange to me as I thought that even though it is not pretty by any means, it should work. I'm confused.
To make matters worse, the client insists that it is a bug in IE since it appears to work in Firefox. In fact, it is broken in Firefox as well, except for some reason Firefox treats it as a 0.
Any ideas on why this happens and how to fix it easily? Everything I try to render within the server control ends up getting escaped.
Edit
Ok, I found a "fix"
<form id="form1" runat="server" method="post" action='<%# String.Format("Default.aspx?id={0}", 5) %>' >
But that requires me to call DataBind which is adding more of a hack to the original hack. Guess if nobody thinks of anything else I'll have to go with that.
ASP.NET 3.5 added the "Action" property to the HtmlForm control. Your previous code worked just fine because "action" was just a string, and the code nugget would emit the additional data for you. Now that there is an Action property, you can't use a simple code emit nugget, since a server-side control expects a property to have a literal string value (same as any other server-side control property).
Your workaround of using the biding syntax is correct. To make it work like it used to, you would have to remove the runat=server tag on your form, which would then prevent the ASPX parser from treating it as an HtmlForm control, and instead treat it as a literal (where your code emit nugget would be allowed to work).
Your other option, which may be much cleaner - is to simply set the Form's action property through code-behind in the page_load. The reason the action property is set the way it is, was because in earlier versions of .NET Framework, there was no support for setting the Action property.
your form needs a runat=server

Resources