Gå til innhold

Sterkt uønsket egenskap:)


Anbefalte innlegg

Hei

 

Når jeg lager sider med ASP:button genereres ofte egneskapen language="javascript". Denne er ikke tillatt i xhtml og gjør at sidene ikke validerer.

 

Den har heller ingen funksjon, for skriptet ligger i onclick="javascript:[en kodesnutt]"

 

Er det mulig å få luket ut denne irriterende egenskapen?

 

Eirik

Lenke til kommentar
Videoannonse
Annonse
Hmm... jeg får kun <script type="text/javascript">...  (.Net 2.0)

 

Hvilken versjon av .Net bruker du? Kan du legge med innholdet av aspx filen du bruker?

7418762[/snapback]

Jeg bruker 2.0. Som regel får jeg også kun <script type="text/javascript">, men av og til dukker denne language=javascript opp.

 

Jeg har ikke tilgang til aspx-filen fra jobb, men et eksempel på HTML-en finner du på denne lenken

 

http://www.hafver-ronjum.no/statistikk.aspx

 

under submit button id "publiser"

 

Kan poste aspx-filen senere i dag!:)

 

Takk for hjelpen

Lenke til kommentar

Fint om du poster den ja...

 

Du kan lage din egen knapp som arver av System.Web.UI.WebControls.Button. Og override RenderControl. Kalle base.RenderControl til en TextWriter som lagrer html'n i minnet/string og replace/fjerne det som er uønsket, for så å skrive det til den TextWriter objektet som du får som parameter i RenderControl.

(sånn utifra hukomelsen).

 

Det kan sikkert være greit å bruke Reflector for å se på hvordan/hvorfor Button skriver ut language="..".

Lenke til kommentar

Her er aspx-koden i all sin enkelhet

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="validererIkke.aspx.cs" Inherits="validererIkke" %>

 

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

 

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

<head runat="server">

<title>Test</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"

ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator><br />

<asp:Button ID="Button1"

runat="server" Text="Button" OnClick="Button1_Click" />

</div>

</form>

</body>

</html>

Lenke til kommentar

Jeg har forsket litt på det selv:

 

Det er validator-controlene som skaper den meningsløse attributten.

 

Hvis du prøver å fjerne den, ser du alt går bra:)

 

Du kan lage din egen knapp som arver av System.Web.UI.WebControls.Button. Og override RenderControl. Kalle base.RenderControl til en TextWriter som lagrer html'n i minnet/string og replace/fjerne det som er uønsket, for så å skrive det til den TextWriter objektet som du får som parameter i RenderControl.

(sånn utifra hukomelsen).

 

Det kan sikkert være greit å bruke Reflector for å se på hvordan/hvorfor Button skriver ut language="..".

 

jeg har hørt om denne RenderControl'en, men må innrømme at jeg ikke forsto så mye av dette....:)

Lenke til kommentar

Hos meg får jeg fortsatt ikke language="javascript"...

 

Med aspx koden din:

<input type="submit" name="Button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))" id="Button1" />

 

Du kan se selv på http://jorn.aakre.no/test

 

Har du installert alle oppdateringene fra Windows Update? Får du samme problem når du kjører i den integrerte webserveren i VS.Net? Hvilken versjon av IIS kjører du? Hvordan ser web.config hos deg ut?

Lenke til kommentar
Hos meg får jeg fortsatt ikke language="javascript"...

 

 

Du kan se selv på http://jorn.aakre.no/test

 

Har du installert alle oppdateringene fra Windows Update?  Får du samme problem når du kjører i den integrerte webserveren i VS.Net? Hvilken versjon av IIS kjører du? Hvordan ser web.config hos deg ut?

7425954[/snapback]

 

Merkelig....

 

Ja, jeg får samme resultat uansett om jeg kjører det lokalt i VS.NET eller på webhotellet.

 

Skal sjekke IIS-versjon. Tror du det kan ha noe å si i og med at jeg får samme resultat når jeg kjører gjennom VS?

 

Kan også prøve med en ny web.config, og se om det hjelper.

 

Kommer tilbake etter å ha testet litt mer.

 

Takk for hjelpen så langt!:)

Lenke til kommentar

Vel, jeg bruker IIS 5.1 lokalt.

 

Her kommer også (en lettere redigert web.config). Noen i stand til å forstå problemet?

 

<?xml version="1.0"?>

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

<connectionStrings>

<add name="XXX" connectionString="XXX"

providerName="System.Data.SqlClient" />

</connectionStrings>

<system.web>

<compilation defaultLanguage="c#" debug="true">

<compilers>

<compiler language="c#" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=XXX" extension=".cs" compilerOptions="/d:DEBUG;TRACE"/>

</compilers>

</compilation>

 

<customErrors mode="RemoteOnly"/>

 

<authentication mode="Forms" >

<forms name=".SecurePage" loginUrl="~/login.aspx" >

<credentials>

<user name ="XXX" password="XXX" />

</credentials>

</forms>

</authentication>

 

<authorization>

<allow users="*"/>

</authorization>

 

<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>

 

<sessionState mode="InProc" stateConnectionString="XXX" sqlConnectionString="XXX" cookieless="false" timeout="20"/>

 

<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

<xhtmlConformance mode="Legacy"/>

</system.web>

</configuration>

Endret av eirikronjum
Lenke til kommentar

Det er denne linjen som gjør det:

 

<xhtmlConformance mode="Legacy"/>

 

Fjern den så blir alt bra :thumbup:

Standard når du fjerner den vil være Transitional.

Evt kan du bruke Strict:

 

<xhtmlConformance mode="Strict"/>

 

Legacy er kun for bakoverkompabilitet. F.eks. hvis du har javascript som krever at output'n er lik som den var i .Net 1.1. Så Legacy er som regel ganske unødvendig...

Lenke til kommentar

Tips:

 

<sessionState mode="InProc" stateConnectionString="XXX" sqlConnectionString="XXX" cookieless="false" timeout="20"/>

 

Du trenger ikke connectionstring'ene her når du bruker inproc :)

Ellers er resten av den linjen default, så du kan gjerne fjerne hele linjen.

Lenke til kommentar
Det er denne linjen som gjør det:

 

<xhtmlConformance mode="Legacy"/>

 

Fjern den så blir alt bra  :thumbup:

Standard når du fjerner den vil være Transitional.

Evt kan du bruke Strict:

 

<xhtmlConformance mode="Strict"/>

 

Legacy er kun for bakoverkompabilitet. F.eks. hvis du har javascript som krever at output'n er lik som den var i .Net 1.1. Så Legacy er som regel ganske unødvendig...

7435490[/snapback]

Dette skal prøves!:)

 

Tusen takk for hjelpen!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...