ASP.NET - Jednotný vzhled stránek   otázka

ASP.NET WebForms

Zdravím.

Realizoval jsem ASP.NET aplikaci,která je naistalována serveru s Windows. Z mobilního zařízení (Motorola MC9190-G) s Windows CE se tato ASP.aplikace volá a všechny web stránky vypadají dle požadavku zákazníka - vše je dostatečně veliké a funkční. Nyní si zákazník zakoupil STEJNÉ zařízení, ale s Windows Mobile. Funkčnost je zachována, ale ovládací prvky ve web stránkách jsou zřetelně menší a tudíž méně čitelné. Jak lze zajistit, aby u obou hardwarově stejných zařízení ale s různým OS vypadaly web stránky stejně.

Stránka MENU.aspx obsahuje zhruba toto :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CTECKY.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t...">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1" />

<title>Menu</title>

<link rel="stylesheet" type="text/css" href="Styly.css" />

</head>

<body>

<form id="formMenu" runat="server" class="stylForm">

<table id="tabMenu" class="stylTableCentre">

.......

<tr>

<td colspan="2">

<asp:Button ID="btnPrijem" runat="server" CssClass="stylButton" Text="Príjem" OnClick="btnPrijem_Click" Width="90%">

</asp:Button>

</td>

</tr>

<tr>

<td colspan="2">

<asp:Button ID="btnVydej" runat="server" CssClass="stylButton" Text="Výdaj" OnClick="btnVydej_Click" Width="90%">

</asp:Button>

</td>

</tr>

.......

</table>

</form>

</body>

</html>

Stylovací sešit Styly.css obsahuje kromě jiného :

.stylForm

{

height: 100%;

width: 100%;

}

.stylTableCentre

{

height: 100%;

width: 100%;

background-color: #dfa894;

text-align: center;

}

.stylButton

{

height: 30px;

font-size: medium;

font-weight: bold;

}

Děkuji a s pozdravem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obecně v HTML platí, že co není nastylováno, na to se použije "nějaký" default. Problém velice často bývá v tom, že každý prohlížeč má tento default jiný a tím se stránky zobrazují rozdílně.

Čekal bych že toto bude i Váš problém u rozdílných mobilních prohlížečů.

Jedna z taktik, jak toto řešit, je použít nějaký dostupný Reset CSS styl soubor, který napřed "vynuluje všechny" základní styly a poté si vše potřebné pro vaše stránky nastavíte ve svém CSS.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem zjistil, že problém, je v tom že jedno zařízení má Windows CE s rozlišením QVGA a druhé zařízení má Windows Mobile s rozlišením VGA. Takže problém je v rozlišení. Tudíž si myslím, že stačí mít dva styly (např.StylVGA a StylQVA) a pak dle mého stačí napsat externí java skript, který na základě rozlišení zvolí správný styl.

Do hlavičky každé stránky *.aspx jsem napsal toto :

<head runat="server">

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1" />

<title></title>

<script src="<%=Page.ResolveUrl("~/Styly.js")%>" type="text/javascript"></script>

</head>

A pak jsem napsal tento JAVA skript "Styly.js" ale nevím, zda není moc složitý. Bojoval jsem s relativní cestou ke stylům.

//**************************************** Skript pro volbu stylu dle nastaveneho rozliseni ***************************

// VGA = 640 × 480

// QVGA = 320 × 240

var a = window.screen;

var w = a.width;

var h = a.height;

//Urceni realtivni cesty ke stylu

var webLocation = document.location.toString();

var applicationNameIndex = webLocation.indexOf('/', webLocation.indexOf('://') + 3);

var applicationName = webLocation.substring(0, applicationNameIndex) + '/';

var webFolderIndex = webLocation.indexOf('/', webLocation.indexOf(applicationName) + applicationName.length);

var webFolderFullPath = webLocation.substring(0, webFolderIndex);

var webFolderRelativePath = webLocation.substring(applicationNameIndex, webFolderIndex);

//element pro vybrany styl bude ve tvaru <link rel="stylesheet" type="text/css" href=".css"/>

var styleNode = document.createElement('link');

styleNode.setAttribute('rel', 'stylesheet');

styleNode.setAttribute('type', 'text/css');

if (w > "640" & h > "480") {

styleNode.setAttribute('href', webFolderRelativePath+'/StylyVGA.css');

}

else if (w = "640" & h == "480") {

styleNode.setAttribute('href', webFolderRelativePath + '/StylyVGA.css');

}

else if (w < "640" & h < "480") {

styleNode.setAttribute('href', webFolderRelativePath + '/StylyQVGA.css');

}

//alert("Your system resolution is:" + w.toString() + "*" + h.toString() + " - " + styleNode["href"].toString());

//Pridani elementu do "<head> </head>" oddílu html stranky

document.getElementsByTagName('head')[0].appendChild(styleNode);

Nevím ale, zda to je dobrá cesta....

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro psaní kódu používejte tlačítko podle jazyka, takhle je to strašně nepřehledné. Ta rozlišení se mohou vyskytovat jen dvě? Co když jich bude víc?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback