Microsoft MVC vrs WebForms – What do you prefer

I recently had a lively discussion with a colleague over what is better Microsoft MVC or WebForms.  My friend had stated he liked MVC because it kept his code organized and clean.  He also stated that he has seen many WebForm projects that was just a mess of spaghetti like code.  My response was simple; It is all about developer discipline.  If the coder is well disciplined and refactored their work rather than just keep stacking on band aides and fixes, the code would be clean and organized.  I think it was said well “It is the latest craze!”. Continue reading Microsoft MVC vrs WebForms – What do you prefer

February Recap – jQuery Made Simple

February is a month that I made jQuery made Simple examples that helped me at to my library and hopefully will help you.  I typically try not to use jQuery libraries or plugins as I feel it is often easy enough for me to do quickly and allows me stretch my creativity and increase my skill-set.  I fee it is important to practice or you loose it.

You may use all of my examples free with no strings attached.

All of my examples use no additional libraries or plugins.  Just basic jQuery!

Here are the examples created in February: Continue reading February Recap – jQuery Made Simple

jQuery Folder Tree Menu

Folder MenuToday I thought that I would put together a simple jQuery folder menu for myself to use in projects to come.  It is easily modified,   easy to create dynamically and easily styled.  The jQuery script portion is rather simple and has been tested on Chrome, FireFox and IE. This is another step in the direction of building a base library of scripts for me to use.

Download full Sample Code: http://www.unlatched.com/sample/foldertree/FolderView.htm

Run Sample Code:  http://www.unlatched.com/sample/foldertree/foldertree.zip
Continue reading jQuery Folder Tree Menu

Simple jQuery Menu

Now days it seems that there is a plug-in for almost any jQuery task.  The trouble with plug-ins is that they are often not flexible enough and the designer / developer who is using them is not practicing developing their own solution.  It is too easy to Google for a plug-in to do the job.  Googling for the correct solution may take just as long as creating one yourself.   Do not take me wrong; I use plug-ins, but I use plug-ins when it is a more complicated solution and not worth my time or it is just a one-off solution. Continue reading Simple jQuery Menu

Tricking Out Classic ASP With JSON – Updated

Amendment:  Some people have had trouble downloading the aspJSON.asp file from the site where I had found it.  You can download the file from me.

Amendment:: Some people were asking for a solution to Mandrill and SendGrid. Both solutions are similar and therefore I selected one to publish. You can contact me if you would like more. See the following: Part II – The Mandrill Experience

Sometimes you get trapped in using languages you don’t prefer. I often find my self playing in the bowels of Classic ASP. Now Classic ASP is not bad, but it is a little outdated and has not really been built upon for a few years. I have recently built some new tools in Classic ASP to compliment an existing tool set; however, I tricked out ASP with JSON.

To do this I had found a wonderful import file written by Gerrit van Kuipers. You can download a copy of the file from: www.aspjson.com. Yes it is version 1.0, but I have not found an issue with it yet.

Continue reading Tricking Out Classic ASP With JSON – Updated

DotNet Postbacks Not Working in IE11

Many people are posting the woes of DotNet Postbacks not working in IE11.  I too experienced this and remembered that there were app_browser files that could be modified to give the browser further instructions.  With a quick google search I was able to find the exact solution that I was looking for.  I cannot take credit for it so I will share the original URL from which I got my answer. [ Answer ]

However Here is the code so you do not have to click on the link above:

 <browsers>  
   <browser id="IE11" parentID="Mozilla">  
     <identification>  
       <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />  
       <userAgent nonMatch="IEMobile" />  
     </identification>  
     <capture>  
       <userAgent match="Trident/(?'layoutVersion'\d+)" />  
     </capture>  
     <capabilities>  
       <capability name="browser" value="IE" />  
       <capability name="layoutEngine" value="Trident" />  
       <capability name="layoutEngineVersion" value="${layoutVersion}" />  
       <capability name="extra" value="${extra}" />  
       <capability name="isColor" value="true" />  
       <capability name="letters" value="${letters}" />  
       <capability name="majorversion" value="${major}" />  
       <capability name="minorversion" value="${minor}" />  
       <capability name="screenBitDepth" value="8" />  
       <capability name="type" value="IE${major}" />  
       <capability name="version" value="${version}" />  
     </capabilities>  
   </browser>  
   <!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->  
   <browser id="IE110" parentID="IE11">  
     <identification>  
       <capability name="majorversion" match="11" />  
     </identification>  
     <capabilities>  
       <capability name="ecmascriptversion" value="3.0" />  
       <capability name="jscriptversion" value="5.6" />  
       <capability name="javascript" value="true" />  
       <capability name="javascriptversion" value="1.5" />  
       <capability name="msdomversion" value="${majorversion}.${minorversion}" />  
       <capability name="w3cdomversion" value="1.0" />  
       <capability name="ExchangeOmaSupported" value="true" />  
       <capability name="activexcontrols" value="true" />  
       <capability name="backgroundsounds" value="true" />  
       <capability name="cookies" value="true" />  
       <capability name="frames" value="true" />  
       <capability name="javaapplets" value="true" />  
       <capability name="supportsCallback" value="true" />  
       <capability name="supportsFileUpload" value="true" />  
       <capability name="supportsMultilineTextBoxDisplay" value="true" />  
       <capability name="supportsMaintainScrollPositionOnPostback" value="true" />  
       <capability name="supportsVCard" value="true" />  
       <capability name="supportsXmlHttp" value="true" />  
       <capability name="tables" value="true" />  
       <capability name="supportsAccessKeyAttribute" value="true" />  
       <capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" />  
       <capability name="vbscript" value="true" />  
     </capabilities>  
   </browser>  
 </browsers>  

How to change IE11 Useragent

I recently tripped on a need to change the Useragent string for IE11 because of an older DotNet control that I was using and was no longer in development. Again this is not my solution, but it worked for me and I thought I would share it with the world. Since it is not my solution, here is the original link [ Answer ]

 <rewrite>  
 <rules>  
 <rule name="Change IE 11 User Agent to IE 10" enabled="true">  
  <match url="(.*)" />  
  <action type="None" />  
  <conditions>  
   <add input="{HTTP_USER_AGENT}" pattern=".trident\/[789]" />  
  </conditions>  
  <serverVariables>  
   <set name="HTTP_USER_AGENT" value="Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.2; Trident/7.0)" />  
  </serverVariables>  
  </rule>  
  </rules>  
 </rewrite>  

To make this work, you need to add the variable “HTTP_USER_AGENT” to the rewrite module in IIS.  If you do not, you will be told to by the error returned in IIS.  For instructions for adding the variable click the following:  [ link ]

IE11 Thinking it is a Cookieless Browser

Recently I had an issue where IE11 did not want to track cookies turning IE11 into a Cookieless Browser.  I learned quickly this is the default behaviour of the browser unless you uncheck a no-tracking option during its setup.  You know that you have an issue when you have a url that has hash like injection in it after a user signs in.  Since you cannot force your users to turn off the no-tracking option, here is a way I got around it for sites with logins.

In the code below, the key is cookieless=”UseCookies”

 <authentication mode="Forms">  
  <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />  
 </authentication>