Archive for the 'asp.net' Category

ASP.NET client-side Page.IsValid

Als je client-side de Page.IsValid property client-side wil controlleren kan de globale variabele “Page_IsValid” worden gebruikt.

om de client-side pagina validatie uit te voeren kan de functie “Page_ClientValidate();” worden aangeroepen.


Page_ClientValidate();

if (Page_IsValid ) {
//some JS
}

Meer informatie op msdn.

DotNetNuke infinite redirect

dotnetnuke-logo.gif

Het fixen van de infinite redirect loop op een DotNetNuke site kan op de volgende manieren:

  1. De laatste slash verwijderen “/”, bijv www.example.com/. Verwijder de “/” om de loop te fixen.
  2. Verander de web.config en zet usePortNumber=”true” (In mijn geval runde de site op port 80 toch heeft deze setting de loop verholpen)

Ik had voor dat dit issue optrad nog een ander probleempje, er werdt verkeert geredirect, namelijk naar de portAlias van mijn development omgeving. Dit is te verhelpen door in de Tabel ‘PortalAlias’ de portAlias aan te passen naar de nieuwe portalAlias

Scalable CSS buttons

Meeschalende CSS buttons, het blijft een leuke uitdaging om dit voor elkaar te krijgen. De mooiste techniek die ik tot nu toe ben tegengekomen is deze van David’s Kitchen.

Hierin worden buttons en links met de .btn class via jQuery vervangen xhtml valide markup. Deze nieuwe  markup wordt vervolgens op gemaakt via een aantal CSS regels.

Het mooie van deze techniek is behalve dat de knoppen meeschalen met de tekst, de kleuren van de knop niet in de achtergrond image worden gezet maar gewoon via CSS classes. De kleur van de knoppen kan zo dus makkelijk worden aangepast.

The script failed to load. Inaccessible path.

In de AJAX Control Toolkit wordt nog niet afdoende rekening gehouden met browsers die gebaseerd zijn op Webkit (Safari 3+ en Chrome). Hierdoor kunnen deze browsers sommige AJAX Control Toolkit scripts niet uitvoeren. Gelukkig hebben de jongens van het ASP.NET forum

een workaround gevonden:

1. Plaats de volgende code in een safariHack.js bestand


Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit
if( navigator.userAgent.indexOf( 'WebKit/' ) > -1 )
{
Sys.Browser.agent = Sys.Browser.WebKit;
Sys.Browser.version = parseFloat( navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
Sys.Browser.name = 'WebKit';
}

2. Voeg een reference toe aan je scriptmanager


<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/Scripts/Safari3AjaxHack.js" />
</Scripts>
</asp:ScriptManager>

Workaround ValidationSummary ModalPopup

It appears there is a bug in the AJAX Control toolkit ModalPupExtender. Somewhere in the prerendered JS there is a semicolon missing when using a ValidationSummary in a ModalPopup.


[ToolboxData("<{0}:AjaxValidationSummary runat=server>“)]
    public class AjaxValidationSummary : ValidationSummary
    {
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            ScriptManager.RegisterStartupScript(this.Page,      this.Page.GetType(), this.ClientID, “;”, true);
        }
    }

SyntaxHighLighter

Dankzij het mooie werk van Alex Gorbatchev zal de source tekst op dit blog er nu een stuk beter uitzien.


 public partial class Login : PageBase
    {
        #region Properties
        public override string ContentTitle
        {
            get
            {
                return ResourceService.GetWebResourceString("LoginContentTitle");
            }
        }

        public override string PageExplanation
        {
            get
            {
                return ResourceService.GetWebResourceString("LoginPageExplanation");
            }
        }
        #endregion

        #region Events Handlers
        protected void Page_Init(object sender, EventArgs e)
        {
            FormsAuthentication.SignOut();
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
        #endregion Events Handlers
    }

Een MVC voorbeeld tutorial door Scott Guthrie

Scott Guthrie heeft een tutorial geschreven hoe je van de grond af een MVC applicatie kan bouwen. De Tutorial.

Recursive FindControl Method

In tegenstelling tot wat je zou verwachten werkt de FindControl(string id) method niet recursief. Hier een implementatie die vanaf een parentcontrol alle childcontrols recursief doorzoekt naar het controlId.


public static T FindControlRecursive<t>(this Control parentControl, string id) where T : Control
{
T ctrl = default(T);

if ((parentControl is T) && (parentControl.ID == id))
return (T)parentControl;

foreach (Control c in parentControl.Controls)
{
ctrl = c.FindControlRecursive<t>(id);

if (ctrl != null)
break;
}
return ctrl;
}

ASP.NET Menu renderen met UL tags

logo.pngDanny chen legt op zijn blog een aantal manieren uit om een asp.net menu structuur te renderen middels UL tags ipv een TABLE zoals het standaard asp.net control dit doet.

Multiple sitemaps

Om meerdere sitemaps te kunnen gebruiken in je asp.net website moet de web.config uitgebreid worden met de sitemap property:


<sitemap defaultprovider="XmlSiteMapProvider" enabled="true">
<providers>
<add sitemapfile="web.sitemap" name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" securitytrimmingenabled="true"></add>
<add sitemapfile="my.sitemap" name="MyXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" securitytrimmingenabled="true"></add>
</providers>
</sitemap></pre>
Om de andere sitemap te gebruiken voeg een SiteMapDatasource toe aan de pagina:
<pre lang="html">
<asp:sitemapdatasource id="SiteMapDataSource1" runat="server" sitemapprovider="MyXmlSiteMapProvider"></asp:sitemapdatasource>

Deze kan nu gebind worden aan een navigatie control (treeview, menu)