473,385 Members | 1,766 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

ASP.NET is "butchering" my code

Hi

I have two machines, one running Win 2000 and VS.NET 2002, and one running
Mac OS 10.2.

I can develop web apps on my Windows machine, and look at them in IE, and
they look fine. But if I try to view my pages in Safari (Apple's web
browser) on my Mac, there are various formatting problems. I've investigated
what's happening and it seems that ASP.NET is discriminating against Safari
(and other browsers).

For testing, I set up a simple ASP.NET page with a single TextBox on it,
which I resized. It uses the following line of code:

<asp:textbox Height="50" ID="TextBox1" runat="server" TextMode="MultiLine"
Width="350" />

Now, I can open the resulting page using IE, and if I look at the HTML code
generated by ASP.NET (by using View Source), the line responsible for
drawing the TextBox is:

<textarea name="TextBox1" id="TextBox1"
style="height:50px;width:350px;"></textarea>

That line contains all the code necessary to draw the TextBox to the size I
want, and displays fine in IE. However, opening the same page in Safari and
looking at the source, I see this code:

<textarea name="TextBox1" id="TextBox1"></textarea>

Huh? Where's all the sizing information gone? The TextBox sizes itself to
whatever the default is, which is nowhere near as large as what I want it to
be. Well maybe Safari isn't capable of drawing the TextBox to the required
size? But I've checked this out too, and that's not the problem. By enabling
the debugging functions in Safari, there's now an option for changing the
user agent and pretending you're a different browser. So I set the user
agent to IE6 on Windows, and voila, the TextBox now appears the correct size
in Safari. I looked at the various user agents available in Safari (Mozilla
1.1, Netscape 7.0, Netscape 6.2.2, Netscape 4.79, Mac IE 5.22, Windows IE
6.0, and Konqueror 3), and all of those user agents, which the exception of
the IE ones, receive this "butchered" code.

I proceeded to open up my "proper" site, which is loaded with controls and
formatting problems, set Safari's user agent to IE6 for Windows, and the
site appears almost perfectly! Most of the formatting problems I was having
have completely disappeared.

So my question is, why is ASP.NET removing all the formatting code if the
browser isn't IE, and most importantly, how do I stop it from doing this?

Thanks
Chris
Nov 17 '05 #1
3 2232
Yes, ASP.NET tries to be smart and not send any HTML to a browser that it's
not sure that browser can handle.
There are ways to deal with these kinds of issues.
For instance, try some code like this to set your field width:

MyTextBox.Attributes.Add("style", "width:350px;")

--
I hope this helps,
Steve C. Orr, MCSD
http://Steve.Orr.net

"Chris Mahoney" <ch**********@paradise.net.nz> wrote in message
news:uC**************@tk2msftngp13.phx.gbl...
Hi

I have two machines, one running Win 2000 and VS.NET 2002, and one running
Mac OS 10.2.

I can develop web apps on my Windows machine, and look at them in IE, and
they look fine. But if I try to view my pages in Safari (Apple's web
browser) on my Mac, there are various formatting problems. I've investigated what's happening and it seems that ASP.NET is discriminating against Safari (and other browsers).

For testing, I set up a simple ASP.NET page with a single TextBox on it,
which I resized. It uses the following line of code:

<asp:textbox Height="50" ID="TextBox1" runat="server" TextMode="MultiLine"
Width="350" />

Now, I can open the resulting page using IE, and if I look at the HTML code generated by ASP.NET (by using View Source), the line responsible for
drawing the TextBox is:

<textarea name="TextBox1" id="TextBox1"
style="height:50px;width:350px;"></textarea>

That line contains all the code necessary to draw the TextBox to the size I want, and displays fine in IE. However, opening the same page in Safari and looking at the source, I see this code:

<textarea name="TextBox1" id="TextBox1"></textarea>

Huh? Where's all the sizing information gone? The TextBox sizes itself to
whatever the default is, which is nowhere near as large as what I want it to be. Well maybe Safari isn't capable of drawing the TextBox to the required
size? But I've checked this out too, and that's not the problem. By enabling the debugging functions in Safari, there's now an option for changing the
user agent and pretending you're a different browser. So I set the user
agent to IE6 on Windows, and voila, the TextBox now appears the correct size in Safari. I looked at the various user agents available in Safari (Mozilla 1.1, Netscape 7.0, Netscape 6.2.2, Netscape 4.79, Mac IE 5.22, Windows IE
6.0, and Konqueror 3), and all of those user agents, which the exception of the IE ones, receive this "butchered" code.

I proceeded to open up my "proper" site, which is loaded with controls and
formatting problems, set Safari's user agent to IE6 for Windows, and the
site appears almost perfectly! Most of the formatting problems I was having have completely disappeared.

So my question is, why is ASP.NET removing all the formatting code if the
browser isn't IE, and most importantly, how do I stop it from doing this?

Thanks
Chris

Nov 17 '05 #2
"Chris Mahoney" <ch**********@paradise.net.nz> wrote in
news:uC**************@tk2msftngp13.phx.gbl:
<SNIP> So my question is, why is ASP.NET removing all the formatting
code if the browser isn't IE, and most importantly, how do I
stop it from doing this?


Chris,

It's not realistic for ASP.NET to know and/or anticipate the
capabilities of every existing browser, not to mention future ones.
IMHO, I believe this (and not some nefarious conspiracy) is the
reason that MS built ASP.NET to target IE, since IE is the dominant
browser. For non-IE browsers, ASP.NET takes the least-common-
denominator approach when generating HTML.

One way around this is to use cascading style sheets (CSS). Let CSS
do the work of positioning/formatting the HTML, rather than ASP.NET.
It's more work, but in the end you'll have almost complete control
over the way the HTML looks, and it will be much easier to get a
uniform look across an entire site.

Hope this helps.

Chris.
-------------
C.R. Timmons Consulting, Inc.
http://www.crtimmonsinc.com/
Nov 17 '05 #3
Thanks, it looks fine in both IE and Safari now. It also looks better, but
not perfect, in Netscape.

Chris
"Steve C. Orr, MCSD" <St***@Orr.net> wrote in message
news:O$**************@TK2MSFTNGP11.phx.gbl...
Yes, ASP.NET tries to be smart and not send any HTML to a browser that it's not sure that browser can handle.
There are ways to deal with these kinds of issues.
For instance, try some code like this to set your field width:

MyTextBox.Attributes.Add("style", "width:350px;")

--
I hope this helps,
Steve C. Orr, MCSD
http://Steve.Orr.net

"Chris Mahoney" <ch**********@paradise.net.nz> wrote in message
news:uC**************@tk2msftngp13.phx.gbl...
Hi

I have two machines, one running Win 2000 and VS.NET 2002, and one running Mac OS 10.2.

I can develop web apps on my Windows machine, and look at them in IE, and they look fine. But if I try to view my pages in Safari (Apple's web
browser) on my Mac, there are various formatting problems. I've investigated
what's happening and it seems that ASP.NET is discriminating against

Safari
(and other browsers).

For testing, I set up a simple ASP.NET page with a single TextBox on it,
which I resized. It uses the following line of code:

<asp:textbox Height="50" ID="TextBox1" runat="server" TextMode="MultiLine" Width="350" />

Now, I can open the resulting page using IE, and if I look at the HTML

code
generated by ASP.NET (by using View Source), the line responsible for
drawing the TextBox is:

<textarea name="TextBox1" id="TextBox1"
style="height:50px;width:350px;"></textarea>

That line contains all the code necessary to draw the TextBox to the size I
want, and displays fine in IE. However, opening the same page in Safari and
looking at the source, I see this code:

<textarea name="TextBox1" id="TextBox1"></textarea>

Huh? Where's all the sizing information gone? The TextBox sizes itself

to whatever the default is, which is nowhere near as large as what I want it to
be. Well maybe Safari isn't capable of drawing the TextBox to the

required size? But I've checked this out too, and that's not the problem. By

enabling
the debugging functions in Safari, there's now an option for changing the user agent and pretending you're a different browser. So I set the user
agent to IE6 on Windows, and voila, the TextBox now appears the correct

size
in Safari. I looked at the various user agents available in Safari

(Mozilla
1.1, Netscape 7.0, Netscape 6.2.2, Netscape 4.79, Mac IE 5.22, Windows IE 6.0, and Konqueror 3), and all of those user agents, which the exception

of
the IE ones, receive this "butchered" code.

I proceeded to open up my "proper" site, which is loaded with controls and formatting problems, set Safari's user agent to IE6 for Windows, and the
site appears almost perfectly! Most of the formatting problems I was

having
have completely disappeared.

So my question is, why is ASP.NET removing all the formatting code if the browser isn't IE, and most importantly, how do I stop it from doing this?
Thanks
Chris


Nov 17 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
by: Matt | last post by:
Hello, I would like to generate what I call an "overall class hierarchy" in UML automatically derived from my C++ code source. An example of what I seek: ...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.