Monday, 10 November 2014

7 jQuery Code Snippets every web developer must have

jQuery extensively simplified web developer’s life and has become a leader in javascript available libraries. There are a lot of useful jQuery snippets available but here in this post I am going to share 7 basic and widely used code snippets that every front-end web developer must have. Even for those who are new to jQuery can easily understand and get benefit from these routinely used code snippets.

1. Print Page Option
Providing option to print a page is a common task for web developers. Following is the available code:

<!– jQuery: Print Page –>
$(‘a.printPage’).click(function(){
           window.print();
           return false;
}); 
<!– HTML: Print Page –>
<div>
<a  class=”printPage” href=”#”>Print</a>
</div>
2. Helping Input Field/Swap Input Field
In order to make an Input Text field helpful, we normally display some default text inside it (For Example “Company Name”) and when user click on it, text disappears and user can enter the value for it.
You can try it yourself by using the following code snippet.

<!– jQuery: Helping Input Field –>
$(‘input[type=text]‘).focus(function(){    
           var $this = $(this);
           var title = $this.attr(‘title’);
           if($this.val() == title)
           {
               $this.val(”);
           }
}).blur(function() {
           var $this = $(this);
           var title = $this.attr(‘title’);
           if($this.val() == ”)
           {
               $this.val(title);
           }
});

<!– HTML: Swap Input Field –>
<div>
       <input type=”text” 
name=”searchCompanyName”
value=”Company Name” 
title=”Company Name” />
</div>
3. Select/Deselect All options
Selecting or Deselecting all available checkbox options using a link on HTML page is common task.

<!– jQuery: Select/Deselect All –>
$(‘.SelectAll’).live(‘click’, function(){ $(this).closest(‘.divAll’).find(‘input[type=checkbox]‘).attr(‘checked’, true); return false; }); $(‘.DeselectAll’).live(‘click’, function(){ $(this).closest(‘.divAll’).find(‘input[type=checkbox]‘).attr(‘checked’, false); return false; });
<!– HTML: Select/Deselect All –>
<div class=”divAll”> <a href=”#” class=”SelectAll”>Select All</a>&nbsp; <a href=”#” class=”DeselectAll”>Deselect All</a> <br /> <input type=”checkbox” id=”Lahore” /><label for=”Lahore”>Lahore</label> <input type=”checkbox” id=”Karachi” /><label for=”Karachi”>Karachi</label> <input type=”checkbox” id=”Islamabad” /><label for=”Islamabad”>Islamabad</label> </div>
4. Disabling Right Click
For web developers, its common to disable right click on certain pages so following code will do the job.
<!– jQuery: Disabling Right Click –>
$(document).bind(“contextmenu”,function(e){
       e.preventDefault();

   });
 5. Identify which key is pressed.
Sometimes, we need to validate the input value on a textbox. For example, for “First Name” we might need to avoid numeric values. So, we need to identify which key is pressed and then perform the action accordingly.
<!– jQuery: Which key is Pressed. –>
$(‘#txtFirstName’).keypress(function(event){
     alert(event.keyCode);
  });
<!– HTML: Which key is Pressed. –>
<asp:TextBox ID=”txtFirstName” runat=”server”></asp:TextBox>
 6. Validating an email.
Validating an email address is very common task on HTML form.
<!– jQuery: Validating an email. –>
$(‘#txtEmail’).blur(function(e) {
            var sEmail = $(‘#txtEmail’).val();
            if ($.trim(sEmail).length == 0) {
                alert(‘Please enter valid email address’);
                e.preventDefault();
            }        
            var filter = /^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]
                             {2,4}|[0-9]{1,3})(]?)$/;        
            if (filter.test(sEmail)) {
                alert(‘Valid Email’);
            }
            else {
                alert(‘Invalid Email’);
                e.preventDefault();
            }
        });
<!– HTML: Validating an email–>
<asp:TextBox id=”txtEmail” runat=”server” />
 7. Limiting MaxLength for TextArea
Lastly, it usual to put a textarea on a form and validate maximum number of characters on it.
<!– jQuery: Limiting MaLength for TextArea –>
   var MaxLength = 500;
       $(‘#txtDescription’).keypress(function(e)
       {
          if ($(this).val().length >= MaxLength) {
          e.preventDefault();}
       });
<!– HTML: Limiting MaLength for TextArea–>
<asp:TextBox ID=”txtDescription” runat=”server” 
                         TextMode=”MultiLine” Columns=”50″ Rows=”5″></asp:TextBox>


Sunday, 9 November 2014

ASP.NET MVC3 Vs MVC4 Vs MVC5

In this ASP.NET MVC tutorial, we will have a quick look into new and important features introduced in major versions of Microsoft ASP.NET MVC starting from MVC 3 to MVC 5 (the latest one so far).
Building your ASP.NET MVC Application using Entity Framework

ASP.NET MVC 3

  • New Project Templates having support for HTML 5 and CSS 3.
  • Improved Model validation.
  • Razor View Engine introduced with a bundle of new features.
  • Having support for Multiple View Engines i.e. Web Forms view engine, Razor or open source.
  • Controller improvements like ViewBag property and ActionResults Types etc.
  • Unobtrusive JavaScript approach.
  • Improved Dependency Injection with new IDependencyResolver.
  • Partial page output caching

ASP.NET MVC 4

  • ASP.NET Web API, a framework that simplifies the creation of HTTP services and serving a wide range of clients. Follow to create your first ASP.NET Web API service.
  • Adaptive rendering and other look-n-feel improvements to Default Project Templates.
  • A truly Empty Project Template.
  • Based on jQuery Mobile, new Mobile Project Template introduced.
  • Support for adding controller to other project folders also.
  • Task Support for Asynchronous Controllers.
  • Controlling Bundling and Minification through web.config.
  • Support for OAuth and OpenID logins using DotNetOpenAuth library.
  • Support for Windows Azure SDK 1.6 and new releases.

ASP.NET MVC 5

Creating your first ASP.NET MVC 5 Application in 4 simple steps
  • Bootstrap replaced the default MVC template.
  • ASP.NET Identity for authentication and identity management.
  • Authentication Filters for authenticating user by custom or third-party authentication provider.
  • With the help of Filter overrides, we can now override filters on a method or controller.
  • Attribute Routing is now integrated into MVC 5.

Thursday, 6 November 2014

Passing data from Controller to View in ASP.NET MVC

ASP.NET MVC is a framework that facilitates building web applications based on MVC (Model-View-Controller) design pattern. Request coming from client reaches the Controllerthrough URL Rewriting Module. Controller decides which model to use in order to fulfill the request. Further passing the Model data to View which then transforms the Model data and renders response to client as shown in following basic level request flow diagram.
ASP.NET MVC Request Flow
In this ASP.NET MVC Tutorial, we will discuss and implement different options to pass data from ASP.NET MVC Controller to View. Following are the available options to pass data from a Controller to View in ASP.NET MVC:
  • ViewBag
  • ViewData
  • TempData
If we want to maintain state between a Controller and corresponding ViewViewData andViewBag are the available options but both of these options are limited to a single server call (meaning it’s value will be null if a redirect occurs). But if we need to maintain state from one Controller to another (redirect case), then TempData is the other available option.
It’s common that initially it might be a bit difficult for a ASP.NET WebForms developer to digest above flow and need for options to pass data from Controller to View. Because in WebForms approach, Controller and View are tightly coupled to each other.
 ViewBag Example
As we discussed earlier that ViewBag and ViewData serves the same purpose but ViewBag is basically a dynamic property (a new C# 4.0 feature) having advantage that it doesn’t have typecasting and null checks.
So, In order to pass data from Controller to View using ViewBag, we will modify our EmployeeController code as follows:
 public class EmployeeController : Controller
 {
           // GET: /Employee/
          public ActionResult Index()
         {
                     ViewBag.EmployeeName = “Muhammad Hamza”;
                     ViewBag.Company = “Web Development Company”;
                     ViewBag.Address = “Dubai, United Arab Emirates”;                     
                     return View();
         }
  }
And to get Employee details passed from Controller using ViewBag, View code will be as follows:
  <body>
    <div>
          <h1>Employee (ViewBag Data Example)</h1>
          <div>
                       <b>Employee Name:</b> @ViewBag.EmployeeName<br />
                      <b>Company Name:</b> @ViewBag.Company<br />
                      <b>Address:</b> @ViewBag.Address<br />
          </div>
    </div>
  </body>
In order to see the above changes in action run the solution, we will find the following output.
ViewBag Example

ViewData Example

As compared to ViewBag, ViewData is a dictionary object which requires typecasting as well as null checks. Same above implementation using ViewData can be achieved as follows:
 public class EmployeeController : Controller
 {
           // GET: /Employee/
          public ActionResult Index()
         {
                     ViewData[“EmployeeName”] = “Muhammad Hamza”;
                     ViewData[“Company”] = “Web Development Company”;
                     ViewData[“Address”] = “Dubai, United Arab Emirates”;                     
                     return View();
         }
  }
And to get Employee details passed from Controller using ViewBag, View code will be as follows:
  <body>
    <div>
          <h1>Employee (ViewBag Data Example)</h1>
          <div>
                       <b>Employee Name:</b> @ViewData[“EmployeeName”]<br />
                      <b>Company Name:</b> @ViewData[“Company”]<br />
                      <b>Address:</b> @ViewData[“Address”]<br />
          </div>
    </div>
  </body>
Run the application to view the following output.
ViewData Example