Difference between MVC2, MVC3 and MVC4
View Engine :
·
View Engine is responsible for rendering of the HTML code from
your views to the browser.
·
MVC 2 uses only Web Forms view engine (.aspx) as a default View
Engine.
·
MVC3 uses Razor View Engine (.cshtml for c# and .vbhtml for Visual
Basic) and Web Forms view engine (.aspx).
·
MVC4 also uses Razor View Engine as a default view engine with
some new features like condition attribute and ‘Tilde slash’.
Chart, WebGrid, Crypto,WebImage, WebMail Controls :
·
All these are not available in MVC2.
·
All these are available in MVC3 and in MVC4.
Syntex :
·
(HTML Syntax) Web Forms view engine syntax: <%=Html code %>
in MVC2.
·
(Razor Syntax) Razor View Engine syntax: @Html code in MVC3.
·
MVC4 has the same Razor View Engine Syntax but with the addition of
new features like conditional attribute and ‘Tilde Slash’ i.e. URL resolution.
Objects available for sharing of data between View and Controller :
·
TempData, ViewData are available in MVC2.
·
TempData, ViewData ,ViewBag are available in MVC3.
·
TempData, ViewData ,ViewBag are available in MVC4.
·
TempData is used with current and subsequent request i.e. when you
know the next view to be redirected.
·
In ViewData, dictionary of objects are accessible via strings as
keys.
·
ViewBag was added in the C# 4.0 which uses the dynamic feature
that allows to add properties of an object dynamically . We can say that
ViewBag = ViewData + dynamic feature around the ViewData dictionary.
Jquery Support :
·
Jquery support is Good in MVC2.
·
Jquery support is Better in MVC3.
·
MVC4 provides better support for Jquery like Jquery Mobile.
Dependency Injection Support :
·
Dependency injection is Good in MVC2.
·
It provides powerful hooks with Dependency Injection and Global
Action Filters in MVC3.
·
Better support in MVC4.
Layout Support :
·
Supports only Master Page in MVC2.
·
Supports not only Master Page but also Layout Page in MVC 3 and in
MVC4.
Validation :
·
Client-side Validation and Asynchronous controllers is there in
MVC2.
·
Unobtrusive Ajax and Client side Validation, Jquery Validation and
JSON binding support is in MVC3.
·
Client side validation, Jquery validation and enhanced support for
asynchronous methods in MVC4.
Project Templates :
·
MVC3 supports project templates enabled by HTML 5.
·
MVC4 supports many new features for mobile apps and also provides
new mobile project template and default templates are refreshed and modernized.
Is using try catch is good experience in coding practice
here is a detailed answer .
Best practice is that exception handling should never
hide issues. This means that try-catch blocks should be extremely rare.
There are 3 circumstances were using a try-catch makes
sense.
1. Always deal with known exceptions as low-down as you
can. However, if you're expecting an exception it's usually better practice to
test for it first. For instance parse, formatting and arithmetic exceptions are
nearly always better handled by logic checks first, rather than a specific
try-catch.
2. If you need to do something on an exception (for
instance logging or roll back a transaction) then re-throw the exception.
3. Always deal with unknown exceptions as high-up as you
can - the only code that should consume an exception and not re-throw it should
be the UI or public API.
Below is the use of JIT.
1. JIT is a compiler which converts MSIL code to Native
Code (ie.. CPU-specific code that runs on the same computer architecture).
2. Because the common language runtime supplies a JIT
compiler for each supported CPU architecture, developers can write a set of
MSIL that can be JIT-compiled and run on computers with different
architectures.
3. However, your managed code will run only on a specific
operating system if it calls platform-specific native APIs, or a
platform-specific class library.
4. JIT compilation takes into account the fact that some
code might never get called during execution.
5. Rather than using time and memory to convert all the
MSIL in a portable executable (PE) file to native code, it converts the MSIL as
needed during execution and stores the resulting native code so that it is
accessible for subsequent calls.
6. The loader creates and attaches a stub to each of a
type's methods when the type is loaded.
7. On the initial call to the method, the stub passes
control to the JIT compiler, which converts the MSIL for that method into
native code and modifies the stub to direct execution to the location of the
native code.
8. Subsequent calls of the JIT-compiled method proceed
directly to the native code that was previously generated, reducing the time it
takes to JIT-compile and run the code.
1. GUID is Short form of Globally Unique Identifier, a unique 128-bit number that is produced by the Windows OS or by some Windows applications to identify a particular component, application, file, database entry, and/or user.
2. For instance, a Web site may generate a GUID and assign it to a user's browser to record and track the session.
3. A GUID is also used in a Windows registry to identify COM DLLs.
4. Knowing where to look in the registry and having the correct GUID yields a lot information about a COM object (i.e., information in the type library, its physical location, etc.).
5. Windows also identifies user accounts by a username (computer/domain and username) and assigns it a GUID.
6. Some database administrators even will use GUIDs as primary key values in databases.
7. GUIDs can be created in a number of ways, but usually they are a combination of a few unique settings based on specific point in time (e.g., an
IP address, network MAC address, clock date/time, etc.).
Here i am showing how to create a GUID in c#?
2. For instance, a Web site may generate a GUID and assign it to a user's browser to record and track the session.
3. A GUID is also used in a Windows registry to identify COM DLLs.
4. Knowing where to look in the registry and having the correct GUID yields a lot information about a COM object (i.e., information in the type library, its physical location, etc.).
5. Windows also identifies user accounts by a username (computer/domain and username) and assigns it a GUID.
6. Some database administrators even will use GUIDs as primary key values in databases.
7. GUIDs can be created in a number of ways, but usually they are a combination of a few unique settings based on specific point in time (e.g., an
IP address, network MAC address, clock date/time, etc.).
Here i am showing how to create a GUID in c#?
Guid id
= Guid.NewGuid();
Console.WriteLine(id); // Outputs
"8c1d1c4b-df68-454c-bf30-953e5701949f"
Here is list of oops interview questions and answers for freshers and experienced from basic to advance Object Oriented Programming questions with examples . Net Interview Questions and Answers | OOPs Interview Questions with Answers PDF | OOPs Interview Questions in C++ c# .
Frequently asked .Net Interview Questions and Answers on Object Oriented Programming (OOPS) .NET Interview Questions and answers on OOPS.Here is List of questions.Frequently Asked Questions with answers.
Frequently asked .Net Interview Questions and Answers on Object Oriented Programming (OOPS) .NET Interview Questions and answers on OOPS.Here is List of questions.Frequently Asked Questions with answers.
- What is Abstract method?
- What is Polymorphisms?
- What is Virtual method?
- Can Struct be inherited?
- What is Object?
- What is Class?
- What is Static field?
- What is Static Method?
- What is Inheritance?
- What is Virtual keyword?
- What is New modifiers?
- What is Abstract Class?
- What is Sealed modifiers?
- What is an Interface?
- When to use Interface over abstract class?
- What is pure virtual function?
- Can we specify the access modifier for explicitly implemented interface method?
- What is Protected access modifier in C#?
- What is Public access modifier in C#?
- What is Private access modifier in C#?
- What is Internal access modifier in C#?
- What is Protected Internal access modifier in C#?
- What is method overloading?
- What is Overriding?
- What is Method overloading?
- What is Method Overriding? How to override a function in C#?
- Can we call a base class method without creating instance?
- In which cases you use override and new base?
- Difference between new and override keyword?
- What is a private constructor? Where will you use it?
- Can we declare private class in a Namespace?
- What is Polymorphism?
- What Are Attributes in DotNet?
- What can you do to make class available for inheritance but you need to prevent it's method to come in inheritance chain?
- What's the Difference between Interface and Abstract Class
- What are the various types of Constructors
- What are Constructors ?
- When to Use Abstract Classes and When Interfaces.
- Diversities between an abstract method & virtual method ?
- What is Early binding and late binding?
- How's method overriding different from overloading?
- What does the keyword virtual mean in the method definition?
- Can you declare the override method static while the original method is non-static?
- Can you override private virtual methods?
- Can you prevent your class from being inherited and becoming a base class for some other classes?
- Can you allow class to be inherited, but prevent the method from being over-ridden?
- Why can't you specify the accessibility modifier for methods inside the interface?
- Static datamembers should be initialized inside the constructor. True or False.
- Static methods can not use non static members. True or False.
- A constructor can be private. True or False?
- What is the work of a constructor?
- Name the operators that cannot be overloaded.
- What is "this" pointer?
- Difference between sealed and static classes.
- Differences between a structure and class.
- What are the different ways a method can be overloaded?
- Difference between a Class and an object.
- Define OOPS. What are its benefits?
- Can we have Sealed Method in abstarct class ?
- Can we have an Abstract class without having any abstract method ??
- Can we have Multiple Main Methods in one .cs file
- If the Function has same parameter but different return type (int and float), Is it a overloading?
- How does Composition mechanism works ?
- What is the advantage of parametric polymorphism ?
- What is difference in between abstrct classes and interfaces ?
- Overloading is Static Polymorphism and Overriding is Dynamic Polymorphism ? True or False ?
- What is the default access modifier of a class?
- Can a constructors that is declared within a base class, inherited by subclasses ? Yes or No
Often we need to capitalize the first letters of some word
or some text (for example when we want to display users name or city name etc).
Since string class does not have a method to do this we
could think that there is no built-in solution in C# for this problem.
Here i am giving two solution for this problem.
Solution 1-
We can use
ToTitleCase method of TextInfo class in System.Globalization
namespace for this problem.
public static string
Capitalize(string value)
{
return System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(value);
}
Solution 2-
The below method will return Capitalize Words.
public static string
CapitalizeWords(string value)
{
if
(value == null)
throw
new ArgumentNullException("value");
if
(value.Length == 0)
return
value;
StringBuilder
result = new StringBuilder(value);
result[0] = char.ToUpper(result[0]);
for (int i = 1; i < result.Length; ++i)
{
if
(char.IsWhiteSpace(result[i - 1]))
result[i] = char.ToUpper(result[i]);
}
return
result.ToString();
}
When we thinking how to solve this is problem JavaScript comes in our mind And off course,
that IS THE WAY TO GO.
ASP.NET 2.0 introduced DefaultFocus and DefaultButton properties for HtmlForm class that
you can easily use for requirements like this.
DefaultFocus property gets
or sets the child control on the HtmlForm that will receive the focus when the
HtmlForm is loaded.
DefaultButton property gets or sets the child control of the HtmlForm that causes postback when enter key is pressed on the page.
Here is an example on how to use this two
properties in your pages:
<form id="formtest" runat="server" defaultfocus="txtfirstname"
defaultbutton="btnsubmit ">
defaultbutton="btnsubmit ">
<div>
Name:
<asp:TextBox ID="txtfirstname btnsubmit" runat="server"></asp:TextBox><br />
Address:
<asp:TextBox ID="txtadress" runat="server"></asp:TextBox><br />
<asp:Button ID="btnsubmit" runat="server" Text="Submit" />
<asp:Button ID="btnsubmit" runat="server" Text="Cancel" />
</div>
</form>
NOte: In order for this to work, your form must have runat="server" attribute set.
In Implicit type conversion one datatype is automatically converted to other datatype by compliler.
using System;
class ConversionTest
{
public static void Main()
{
byte mybyte = 1;
int myintA = 1234;
int myintB = mybyte; // this will Implicit cast from byte to int datatypes.
double DoubleD = myintA; // this is Implicit cast from int to double datatype.
Console.WriteLine("{0}", myintB);
Console.WriteLine("{0}", DoubleD);
}
}
Explicit type conversion
In explicit type conversion the type conversion is explicitly defined within a program it is not done by compiler Implicitly.
double A = 101.2;
double B = 305.3;
double C = 306.4;
int result = (int)A + (int)B + (int)C; //result == 712
A regular expression known as regex in short is a special text string which describes a search pattern.
Here is a c# function which accept a string as input parameter and return true if string is valid Email address and return false if string is not valid .
For this function to work properly you have to add these namespaces.
using System.Text;
using System.Text.RegularExpressions;
protected bool checkEmail(string Emailtext)
{
Regex MyEmailRegex = new Regex(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
if (string.IsNullOrEmpty(Emailtext))
{
return false;
}
else
{
return MyEmailRegex.IsMatch(Emailtext);
}
}
Structs are the userdefined data type. Structs are defined by using the struct keyword in c#.
for example:
It is an error to define a default (parameterless) constructor for a struct. It is also an error to initialize an instance field in a struct body. You can initialize struct members only by using a parameterized constructor or by accessing the members individually after the struct is declared.
This example demonstrates struct initialization using both default and parameterized constructors.
Structs Almost have same syntax as classes, But structs are more limited than classes:
• Within a struct declaration, fields cannot be initialized unless they are declared as const or static.
• A struct cannot declare a default constructor (a constructor without parameters) or a destructor.
• Structs are copied on assignment. When a struct is assigned to a new variable, all the data is copied, and any modification to the new copy does not change the data for the original copy.
• Structs are value types but classes are reference types.
• structs can be instantiated without using a new operator.
• Structs can declare constructors that have parameters.
• A struct cannot support the inheritance.
• All structs inherit directly from System.ValueType, which inherits from System.Object.
• A struct can implement interfaces.
• A struct can be used as a nullable type and can be assigned a null value.
for example:
public struct StructA
{
public int x, y;
public A(int p1, int p2)
{
x = p1;
y = p2;
}
}
{
public int x, y;
public A(int p1, int p2)
{
x = p1;
y = p2;
}
}
It is an error to define a default (parameterless) constructor for a struct. It is also an error to initialize an instance field in a struct body. You can initialize struct members only by using a parameterized constructor or by accessing the members individually after the struct is declared.
This example demonstrates struct initialization using both default and parameterized constructors.
public struct StructA
{
public int x, y;
public StructA (int p1, int p2)
{
x = p1;
y = p2;
}
}
class TestStructA
{
static void Main()
{
// Initialize:
StructA StructA1 = new StructA();
StructA StructA2 = new StructA(10, 10);
// Display results:
Console.Write("StructA 1: ");
Console.WriteLine("x = {0}, y = {1}", StructA1.x, StructA1.y);
Console.Write("StructA 2: ");
Console.WriteLine("x = {0}, y = {1}", StructA2.x, StructA2.y);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
{
public int x, y;
public StructA (int p1, int p2)
{
x = p1;
y = p2;
}
}
class TestStructA
{
static void Main()
{
// Initialize:
StructA StructA1 = new StructA();
StructA StructA2 = new StructA(10, 10);
// Display results:
Console.Write("StructA 1: ");
Console.WriteLine("x = {0}, y = {1}", StructA1.x, StructA1.y);
Console.Write("StructA 2: ");
Console.WriteLine("x = {0}, y = {1}", StructA2.x, StructA2.y);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
Structs Almost have same syntax as classes, But structs are more limited than classes:
• Within a struct declaration, fields cannot be initialized unless they are declared as const or static.
• A struct cannot declare a default constructor (a constructor without parameters) or a destructor.
• Structs are copied on assignment. When a struct is assigned to a new variable, all the data is copied, and any modification to the new copy does not change the data for the original copy.
• Structs are value types but classes are reference types.
• structs can be instantiated without using a new operator.
• Structs can declare constructors that have parameters.
• A struct cannot support the inheritance.
• All structs inherit directly from System.ValueType, which inherits from System.Object.
• A struct can implement interfaces.
• A struct can be used as a nullable type and can be assigned a null value.