Return to site

MVC

Interview questions and answers

MVC Interview  Questions and Answers

What is MVC?

MVC is an architectural pattern which separates the representation and the user interaction. It’s divided in to three broader sections, “Model”, “View” and “Controller”. Below is how each one of them handles the task.

The “View” is responsible for look and feel.

“Model” represents the real world object and provides data to the “View”.

     The “Controller” is responsible to take the end user request and load the appropriate                        “Model” and “View”.

Why MVC is Required?  

As per me two needed things are reusability of a code behind logic and easiness of testing and maintainability.  

The ASP.NET behind code is completely tied up with ASP.NET Httpcontext object which makes unit testing very difficult.

Just think how do I unit test the below behind ASP.NET code. How do I create a Http context object, how do I simulate the sender and eventargs objects of the button clicks etc.

MVC reduces the dependency between the components; this makes your code more testable.

MVC does not recommend use of server controls, hence the processing time required to generate HTML response is drastically reduced.

he integration of java script libraries like jQuery, Microsoft MVC becomes easy as compared to Web forms approach.

Is MVC suitable for both windows and web application?

MVC architecture is suited for web application than windows. For window application MVP i.e. “Model view presenter” is more applicable. If you are using WPF and MVVM is more suitable due to bindings.

What is difference between MVC (Model-View-Controller) and MVP (Model-View-Presenter)?


MVC has the controller handling the important work and all the request from the applications are coming directly to the controller. Whereas, MVP has the View as the handler and it handles the requests that are being generated.

MVC is used for web application to provide an easy interface through which the interaction can be done. Whereas, MVP is having the View as its first object that gets executed in the pipeline and it is responsible for passing the event to the Presenter.
ASP.NET Web forms are hard to implement in MVC structure due to its complex architecture and giving the total control to the controller to handle the requests. Whereas, MVP divides the roles such, that it becomes easy to handle the requests and pass it from one model to another.

What is the page lifecycle of an ASP.NET MVC?


The page lifecycle of ASP.NET MVC is having the following process and it is as follows:

App initialization: in this the initiation of the application takes place that allow the application to interact the server and start to run the components.

Routing:
in this the messages are routed to the server for making the delivery of the request easier.

Instantiate and execute controller:
in this way the controller handles the request and passes it on to display the output or replies to the request.
Locate and invoke controller action: The actions allow the controller to be located correctly and it invokes the correct action that has to be taken on the applications.
Instantiate and render view: this helps in view the result of the application that is being built.

What are the benefits of using MVC?

There are two big benefits of MVC:-

Separation of concerns is achieved as we are moving the code behind to a separate class file. By moving the binding code to a separate class file we can reuse the code to a great extent.

Automated UI testing is possible because now the behind code (UI interaction code) has moved to a simple.NET class. This gives us opportunity to write unit tests and automate manual testing.

Is MVC different from a 3 layered architecture?

MVC is an evolution of a 3 layered traditional architecture. Many components of 3 layered architecture are part of MVC. So below is how the mapping goes.

What is the latest version of MVC?

When this note was written, four versions where released of MVC. MVC 1 , MVC 2, MVC 3 and MVC 4. So the latest is MVC 5.

In which assembly is the MVC framework defined?
System.Web.Mvc

Is it possible to combine ASP.NET webforms and ASP.MVC and develop a single web application?
Yes, it is possible to combine ASP.NET webforms and ASP.MVC and develop a single web application.

Is it possible to unit test an MVC application without running the controllers in an ASP.NET process?
Yes, all the features in an asp.net MVC application are interface based and hence mocking is much easier. So, we don't have to run the controllers in an ASP.NET process for unit testing.

Is it possible to share a view across multiple controllers?
Yes, put the view into the shared folder. This will automatically make the view available across multiple controllers.
What is the role of a controller in an MVC application?
The controller responds to user interactions, with the application, by selecting the action method to execute and also selecting the view to render.

What are HTML helpers in MVC?

HTML helpers help you to render HTML controls in the view. For instance if you want to display a HTML textbox on the view, below is the HTML helper code.


We will get output like this.

What is the difference between “HTML.TextBox” vs “HTML.TextBoxFor”?

Both of them provide the same HTML output, “HTML.TextBoxFor” is strongly typed while “HTML.TextBox” isn’t.

Below is a simple HTML code which just creates a simple textbox with “CustomerCode” as name.

Below is “Html.TextBoxFor” code which creates HTML textbox using the property name ‘CustomerCode” from object “m”.

In the same way we have for other HTML controls like for checkbox we have “Html.CheckBox” and “Html.CheckBoxFor”.

What are routing in MVC?

Routing helps you to define user friendly URL structure and map those URL structure to the controller.

For instance let’s say we want that when any user type http://localhost/Person/name/” , it goes to the “Person” Controller and invokes “Search” action. This is defined by adding an entry in to the “routes” collection using the “maproute” function. Below is the under lined code which shows how the URL structure and mapping with controller and action is defined.

What is the significance of ASP.NET routing?
ASP.NET MVC uses ASP.NET routing, to map incoming browser requests to controller action methods. ASP.NET Routing makes use of route table. Route table is created when your web application first starts. The route table is present in the Global.asax file.

What are the 3 segments of the default route, that is present in an ASP.NET MVC application?
1st Segment - Controller Name
2nd Segment - Action Method Name
3rd Segment - Parameter that is passed to the action method

Where are the routing rules defined in an asp.net MVC application?
In Application_Start event in Global.asax

ASP.NET MVC application, makes use of settings at 2 places for routing to work correctly. What are these 2 places?
1. Web.Config File : ASP.NET routing has to be enabled here.
2. Global.asax File : The Route table is created in the application Start event handler, of the Global.asax file.

What is the adavantage of using ASP.NET routing?
In an ASP.NET web application that does not make use of routing, an incoming browser request should map to a physical file. If the file does not exist, we get page not found error.
An ASP.NET web application that does make use of routing, makes use of URLs that do not have to map to specific files in a Web site. Because the URL does not have to map to a file, you can use URLs that are descriptive of the user's action and therefore are more easily understood by users.
What are the 3 things that are needed to specify a route?
1. URL Pattern - You can include placeholders in a URL pattern so that variable data can be passed to the request handler without requiring a query string.
2. Handler - The handler can be a physical file such as an .aspx file or a controller class.
3. Name for the Route - Name is optional.
Is the following route definition a valid route definition?
{controller}{action}/{id}
No, the above definition is not a valid route definition, because there is no literal value or delimiter between the placeholders. Therefore, routing cannot determine where to separate the value for the controller placeholder from the value for the action placeholder.
What is the use of the following default route?
{resource}.axd/{*pathInfo}
This route definition, prevent requests for the Web resource files such as WebResource.axd or ScriptResource.axd from being passed to a controller.
What is the difference between adding routes, to a webforms application and to an mvc application?
To add routes to a webforms application, we use MapPageRoute() method of the RouteCollection class, where as to add routes to an MVC application we use MapRoute() method.
How do you handle variable number of segments in a route definition?
Use a route with a catch-all parameter. An example is shown below. * is referred to as catch-all parameter.
controller/{action}/{*parametervalues}
What are the 2 ways of adding constraints to a route?
1. Use regular expressions
2. Use an object that implements IRouteConstraint interface
Give 2 examples for scenarios when routing is not applied?
1. A Physical File is Found that Matches the URL Pattern - This default behaviour can be overriden by setting the RouteExistingFiles property of the RouteCollection object to true.
2. Routing Is Explicitly Disabled for a URL Pattern - Use the RouteCollection.Ignore() method to prevent routing from handling certain requests.

Can we map multiple URL’s to the same action?

Yes , you can , you just need to make two entries with different key names and specify the same controller and action.

How can we restrict MVC actions to be invoked only by GET or POST?

We can decorate the MVC action by “HttpGet” or “HttpPost” attribute to restrict the type of HTTP calls. For instance you can see in the below code snippet the “Create” action can only be invoked by “HttpGet”. If we try to make Http post on “Create” it will throw an error.

How can we maintain session in MVC?

Sessions can be maintained in MVC by 3 ways tempdata, viewdata and viewbag.

What is the difference between tempdata, viewdata and viewbag?

Temp data: -Helps to maintain data when you move from one controller to other controller or from one action to other action. In other words when you redirect, “tempdata” helps to maintain data between those redirects. It internally uses session variables.

View data: - Helps to maintain data when you move from controller to view.

View Bag: - It’s a dynamic wrapper around view data. When you use “Viewbag” type casting is not required. It uses the dynamic keyword internally.

What is life of “TempData” ?

“TempData” is available for the current request and in the subsequent request it’s available depending on whether “TempData” is read or not.

So if “TempData” is once read it will not be available in the subsequent request.

What is the use of Keep and Peek in “TempData”?

Once “TempData” is read in the current request it’s not available in the subsequent request. If we want “TempData” to be read and also available in the subsequent request then after reading we need to call “Keep” method as shown in the code below.

The more shortcut way of achieving the same is by using “Peek”. This function helps to read as well advices MVC to maintain “TempData” for the subsequent request.

What are partial views in MVC?

Partial view is a reusable view (like a user control) which can be embedded inside other view. For example let’s say all your pages of your site have a standard structure with left menu, header and footer as shown in the image below.

For every page you would like to reuse the left menu, header and footer controls. So you can go and create partial views for each of these items and then you call that partial view in the main view.

How did you create partial view and consume the same?

When you add a view to your project you need to check the “Create partial view” check box.

Once the partial view is created you can then call the partial view in the main view using “Html.RenderPartial” method as shown in the below code snippet.

How can we do validations in MVC?

One of the easy ways of doing validation in MVC is by using data annotations. Data annotations are nothing but attributes which you can be applied on the model properties. For example in the below code snippet we have a simple “customer” class with a property “customercode”.

This”CustomerCode” property is tagged with a “Required” data annotation attribute. In other words if this model is not provided customer code it will not accept the same.

In order to display the validation error message we need to use “ValidateMessageFor” method which belongs to the “Html” helper class.

Later in the controller we can check if the model is proper or not by using “ModelState.IsValid” property and accordingly we can take actions.

Can we display all errors in one go?

Yes we can, use “ValidationSummary” method from HTML helper class.

What are the other data annotation attributes for validation in MVC?

If you want to check string length, you can use “StringLength”.

In case you want to use regular expression, you can use “RegularExpression” attribute.

Some time you would like to compare value of one field with other field, we can use the “Compare” attribute.

In case you want to get a particular error message , you can use the “Errors” collection.

If you have created the model object yourself you can explicitly call “TryUpdateModel” in your controller to check if the object is valid or not.

In case you want add errors in the controller you can use “AddModelError” function.

How can we enable data annotation validation on client side?

It’s a two-step process first reference the necessary jQuery files.

Second step is to call“EnableClientValidation” method.

What is razor in MVC?

It’s a light weight view engine. Till MVC we had only one view type i.e.ASPX, Razor was introduced in MVC 3.

What are the 2 popular asp.net mvc view engines?
1. Razor
2. .aspx

Why razor when we already had ASPX?

Razor is clean, lightweight and syntaxes are easy as compared to ASPX. For example in ASPX to display simple time we need to write.

In Razor it’s just one line of code.

So which is a better fit Razor or ASPX?

Microsoft razor is more preferred because it’s light weight and has simple syntaxes.

What symbol would you use to denote, the start of a code block in aspx views?
<%= %>

In razor syntax, what is the escape sequence character for @ symbol?
The escape sequence character for @ symbol, is another @ symbol
When using razor views, do you have to take any special steps to protect your asp.net mvc application from cross site scripting (XSS) attacks?
No, by default content emitted using a @ block is automatically HTML encoded to protect from cross site scripting (XSS) attacks.

When using aspx view engine, to have a consistent look and feel, across all pages of the application, we can make use of asp.net master pages. What is asp.net master pages equivalent,

when using razor views?
To have a consistent look and feel when using razor views, we can make use of layout pages. Layout pages, reside in the shared folder, and are named as _Layout.cshtml

What are sections?
Layout pages, can define sections, which can then be overridden by specific views making use of the layout. Defining and overriding sections is optional.
What are the file extensions for razor views?
1. .cshtml - If the programming language is C#
2. .vbhtml - If the programming language is VB
How do you specify comments using razor syntax?
Razor syntax makes use of @* to indicate the beginning of a comment and *@ to indicate the end. An example is shown below.
@* This is a Comment *@

Explain the difference between layout and master pages ?

Layout are like master pages in ASP.NET Web form. Master pages give a standard look and feel for Web form views while layout gives standard look and feel or acts like a template for razor views.

How to apply layout to Razor views?

So first we need to create a template file as shown in the below code.

And then apply this template to the view as shown below and display data in those respective sections.

Explain the concept of Scaffolding?

Note :- Do not get scared with the word. Its actually a very simple thing.

Scaffolding is a technique in which the MVC template helps to auto-generate CRUD code. CRUD stands for create, read, update and delete.

So to generate code using scaffolding technique we need to select one of the types of templates (leave the empty one).

For instance if you choose “using Entity framework” template the following code is generated

It creates controller code, view and also table structure as shown in the below figure.

What does scaffolding use internally to connect to database?

It uses Entity framework internally.

How can you do authentication and authorization in MVC?

You can use windows or forms authentication for MVC.

How to implement windows authentication for MVC?

For windows authentication you need to go and modify the “web.config” file and set authentication mode to windows.

Then in the controller or on the action you can use the “Authorize” attribute which specifies which users have access to these controllers and actions. Below is the code snippet for the same. Now only the users specified in the controller and action can access the same.

How do you implement forms authentication in MVC?

Forms authentication is implemented the same way as we do in ASP.NET. So the first step is to set authentication mode equal to forms. The “loginUrl” points to a controller here rather than page.

We also need to create a controller where we will check the user is proper or not. If the user is proper we will set the cookie value.

All the other actions need to be attributed with “Authorize” attribute so that any unauthorized user if he makes a call to these controllers it will redirect to the controller ( in this case the controller is “Login”) which will do authentication.

How Ajax use in MVC?

Ajax Library

JQuery

Below is a simple sample of how to implement Ajax by using “Ajax” helper library. In the below code you can see we have a simple form which is created by using “Ajax.BeginForm” syntax. This form calls a controller action called as “getCustomer”. So now the submit action click will be an asynchronous ajax call.

In case you want to make ajax calls on hyperlink clicks you can use “Ajax.ActionLink” function as shown in the below code

So if you want to create Ajax asynchronous hyperlink by name “GetDate” which calls the “GetDate”

function on the controller , below is the code for the same. Once the controller responds this data is displayed in the HTML DIV tag by name “DateDiv”.

Below is the controller code. You can see how “GetDate” function has a pause of 10 seconds.

The second way of making Ajax call in MVC is by using Jquery. In the below code you can see we are making an ajax POST call to a URL “/MyAjax/getCustomer”. This is done by using “$.post”. All this logic is put in to a function called as “GetData” and you can make a call to the “GetData” function on a button or a hyper link click event as you want.

What kind of events can be tracked in AJAX ?

What is the difference between “ActionResult” and “ViewResult”?

“ActionResult” is an abstract class while “ViewResult” derives from “ActionResult” class. “ActionResult” has several derived classes like “ViewResult” ,”JsonResult” , “FileStreamResult” and so on.

“ActionResult” can be used to exploit polymorphism and dynamism. So if you are returning different types of view dynamically “ActionResult” is the best thing. For example in the below code snippet you can see we have a simple action called as “DynamicView”. Depending on the flag (“IsHtmlView”) it will either return “ViewResult” or “JsonResult”.

What are the different types of results in MVC?

There 12 kinds of results in MVC, at the top is “ActionResult”class which is a base class that can have 11 subtypes’sas listed below: -

  • ViewResult - Renders a specified view to the response stream
  • PartialViewResult - Renders a specified partial view to the response stream
  • EmptyResult - An empty response is returned
  • RedirectResult - Performs an HTTP redirection to a specified URL
  • RedirectToRouteResult - Performs an HTTP redirection to a URL that is determined by the routing engine, based on given route data
  • JsonResult - Serializes a given object to JSON format
  • JavaScriptResult - Returns a piece of JavaScript code that can be executed on the client
  • ContentResult - Writes content to the response stream without requiring a view
  • FileContentResult - Returns a file to the client
  • FileStreamResult - Returns a file to the client, which is provided by a Stream
  • FilePathResult - Returns a file to the client

“ActionFilters” helps you to perform logic while MVC action is executing or after a MVC action has executed.

Above is a some Acton filter type.

Action filters are useful in the following scenarios:-

  • Implement post-processing logic before the action happens.
  • Cancel a current execution.
  • Inspect the returned value
  • Provide extra data to the action.

 Inline action filter.

Creating an “ActionFilter” attribute.

To create a inline action attribute we need to implement “IActionFilter” interface.The “IActionFilter” interface has two methods “OnActionExecuted” and “OnActionExecuting”. We can implement pre-processing logic or cancellation logic in these methods.

The problem with inline action attribute is that it cannot be reused across controllers. So we can convert the inline action filter to an action filter attribute. To create an action filter attribute we need to inherit from “ActionFilterAttribute” and implement “IActionFilter” interface as shown in the below code.

Later we can decorate the controllers on which we want the action attribute to execute. You can see in the below code I have decorated the “Default1Controller” with “MyActionAttribute” class which was created in the previous code.

If I have multiple filters impleted, what is the order in which these filters get executed?
1. Authorization filters
2. Action filters
3. Response filters
4. Exception filters
What are the different types of filters, in an asp.net mvc application?
1. Authorization filters
2. Action filters
3. Result filters
4. Exception filters
Give an example for Authorization filters in an asp.net mvc application?
1. RequireHttpsAttribute
2. AuthorizeAttribute
Which filter executes first in an asp.net mvc application?
Authorization filter
What are the levels at which filters can be applied in an asp.net mvc application?
1. Action Method
2. Controller
3. Application
Is it possible to create a custom filter?
Yes
What filters are executed in the end?
Exception Filters
Is it possible to cancel filter execution?
Yes
What type of filter does OutputCacheAttribute class represents?
Result Filter

 How to send result back in JSON format in MVC?

 In MVC we have “JsonResult” class by which we can return back data in JSON format. Below is a simple sample code which returns back “Customer” object in JSON format using “JsonResult”.

Below is the JSON output of the above code if you invoke the action via the browser.

What is “WebAPI”?

We are already familiar with SOAP based webservices and WCF

WEB API is actually a new kind of framework which is based on HTTP and it is behaving as a service

But here Microsoft is concentrating on being light weight and highly interoperable

It also has one great thing inside that – it can return xml and json both at a time based on client requirement

WEB API is a framework to build a web services on top of http .It can easily consume or produce JSON, XML etc

It is useful in multi device because http is everywhere. We had demand to consume data on HTTP from clients like mobile,javascripts,windows application etc.

 For satisfying the broad range of client “REST” was the proposed approach.

 “WebAPI” is the technology by which you can expose data over HTTP following REST principles.

 How does WCF differ from WEB API ?

With WCF also you can implement REST,So why "WebAPI"?

 WCF was brought in to implement SOAP, never the intention was to implement REST."WebAPI'" is built from scratch and the only goal is to create HTTP services using REST. Due to the one point focus for creating “REST” service “WebAPI” is more preferred.

 How to implement “WebAPI” in MVC?

 Below are the steps to implement "webAPI" :-

 Step1:-Create the project using the "WebAPI" template.

Step 2:- Once you have created the project you will notice that the controller now inherits from "ApiController" and you can now implement "post","get","put" and "delete" methods of HTTP protocol..

Step 3:-If you make a HTTP GET call you should get the below results.

How can we detect that a MVC controller is called by POST or GET ?

To detect if the call on the controller is “POST” action or a “GET” action we can use “Request.HttpMethod” property as shown in the below code snippet.

What is Bundling and minification in MVC?

Bundling and minification helps us to improve request load time of a page thus increasing performance.

How does bundling increase performance?

Web projects always need CSS and script files.Bundling helps us to combine to multiple javascript and CSS file in to a single entity thus minimizing multiple requests in to a single request.

For example consider the below web request to a page . This page consumes two JavaScript files “Javascript1.js” and “Javascript2.js”. So when this is page is requested it makes three request calls:-

One for the “Index” page.

Two requests for the other two JavaScript files “Javascript1.js” and “Javascript2.js”.

Below scenario can become worst if we have lot of javascript files resulting in many multiple requests thus decreasing performance. If we can somehow combine all the JS files in to a single bundle and request them as a single unit that would result in increased performance (See the next figure which has a single request).

So how do we implement bundling in MVC ?

Open the “BundleConfig.cs” from the “App_Start” folder.

bundles.Add(new ScriptBundle("~/Scripts/MyScripts").Include( "~/Scripts/*.js"));

Below is how your “BundleConfig.cs” file will look like.

public     class BundleConfig

{

    public static void RegisterBundles(BundleCollection bundles

{

             bundles.Add(new ScriptBundle("~/Scripts/MyScripts").Include("~/Scripts/*.js"));

             BundleTable.EnableOptimizations = true;

}

}

Once you have combined your scripts in to one single unit we then to include all the JS files in to the view using the below code. The below code needs to put in the ASPX or RAZOR view.

<%= Scripts.Render("~/Scripts/MyScripts") %>

If you now see your page requests you would see that script request is combined in to a one request.

How can you test bundling in debug mode ?

If you are in a debug mode you need to set “EnableOptimizations” to true in the “bundleconfig.cs” file or else you will not see the bundling effect in the page requests.

BundleTable.EnableOptimizations = true;

Explain minification and how to implement the same ?

Minification reduces the size of script and CSS files by removing blank spaces , comments etc. For example below is a simple javascript code with comments.

// This is test var x = 0;

x = x + 1;

x = x * 2;


After implementing minification the javascript code looks something as below. You can see how whitespaces and comments are removed to minimize file size and thus increasing performance.

var x=0;

x=x+1;

x=x*2;

How to implement minification ?

 

When you implement bundling minification is implemented by itself. In other words steps to implement bundling and minification are same.

 

Explain the concept of View Model in MVC ?

 

A view model is a simple class which represents data to be displayed on the view.

For example below is a simple customer model object with “CustomerName” and “Amount” property.

 

CustomerViewModel obj = new CustomerViewModel();

obj.Customer.CustomerName = “priya";

obj.Customer.Amount = 1000;

 

But when this “Customer” model object is displayed on the MVC view it looks something as shown in the below figure. It has “CustomerName” , “Amount” plus “Customer Buying Level” fields on the view / screen. “Customer buying Level” is a color indication which indicates how aggressive the customer is buying.

“Customer buying level” color depends on the value of the “Amount property. If the amount is greater than 2000 then color is red , if amount is greater than 1500 then color is orange or else the color is yellow.

In other words “Customer buying level” is an extra property which is calculated on the basis of amount.

So the Customer viewmodel class has three properties

 

“TxtCustomerName” textbox takes data from “CustomerName” property as it is. “TxtAmount” textbox takes data from “Amount” property of model as it is.

 

“CustomerBuyingLevelColor” displays color value depending on the “Amount “ value.

How can we use two (multiple) models with a single view?

Let us first try to understand what the interviewer is asking. When we bind a model with a view we use the model drop down as shown in the below figure. In the below figure we can only select one model.

But what if we want to bind “Customer” as well as “Order” class to the view.

 For that we need to create a view model which aggregates both the classes as shown in the below code. And then bind that view model with the view.

In the view we can refer both the model using the view model as shown in the below code.

What kind of logic view model class will have ?

 As the name says view model this class has the gel code or connection code which connects the view and the model.

 So the view model class can have following kind of logic's :-

 Color transformation logic: - For example you have a “Grade” property in model and you would like your UI to display “red” color for high level grade, “yellow” color for low level grade and “green” color of ok grade.

 Data format transformation logic :- Your model has a property “Status” with “Married” and “Unmarried” value. In the UI you would like to display it as a check box which is checked if “married” and unchecked if “unmarried”.

 Aggregation logic: - You have two different Customer and Address model classes and you have view which displays both “Customer” and “Address” data on one go.

 Structure downsizing: - You have “Customer” model with “customer Code” and “Customer Name” and you want to display just “Customer Name”. So you can create a wrapper around model and expose the necessary properties.

 What is the use of “Allow HTML” and “Validate Input” attributes?

 While working with MVC you may have noticed that MVC actions doesn’t allow posting HTML values . This is done to avoid cross site scripting security issues.Look at the following example where we are trying to post HTML to the MVC action.

But you can bypass this restriction by using one of the following 2 attributes

  • Validate Input attribute at controller level or action level
  • Allow Html attribute at Mode Level

Explain unobtrusive JavaScript?

 Unobtrusive JavaScript helps you to decouple presentation and behavior. Consider the below button code it has two parts one is the UI i.e. the button itself and second is the behavior i.e. “ShowAlert()”.

 In other words the button is tied up with the “ShowAlert” action. It would be great if we could decouple the behavior from the button so that any other behavior can be attached with the button.

<input type="button" onclick="ShowAlert()" id="btn" />

<script>

 function ShowAlert()

{

alert("Hello");

}

 </script>

Look at this button code you can see no action is attached with the below button element.

<input type="button" id="btn" />

Action to the button is attached on runtime as shown in the below code. If needed tomorrow we can attach some other behavior with “btn” button . So unobtrusive javascript is nothing but decoupling the presentation from the behavior.

<script>

 function ShowAlert()

 {

 alert("Hello");

 }

 var el = document.getElementById("btn"); el.onclick = ShowAlert;

 </script>

Why?

To understand what unobtrusive JavaScript is it's easiest to start with knowing what JavaScript is or does.

JavaScript is a computer programming language: a set of instructions that can help tell a computer what to do, how to do it and when to do it.

With it you can make animations, games, cool effects, tools… You can turn a web page into a functional calculator or a game.

In other words, JavaScript can turn your static web page into a dynamic affair.

if your computer or web browser doesn't have the JavaScript programming language (or it's turned off for security reasons), the web page's main functionality will not work.

What does that mean?

Well, it could mean that the nice dropdown menu when clicked on … does nothing. Nothing at all.
It could mean that the contact form on your business site cannot be filled out.
It could mean that all kinds of crazy effects and functions your web designer has relied on to get your marketing message across and your product sold … are never seen by a whole bunch of people.

The idea of unobtrusive JavaScript is to turn old school design on its head: instead of making 100% JavaScript-powered, dynamic web pages … make 100% regular, static web pages and then, almost as an afterthought, add an "also" layer of JavaScript.

The result are web pages that can work 100% in any browser at any time. And those people who have browsers with JavaScript? They get extra stuff: 110%!

This type of design ensures that menu's, forms and hyperlinks on your site work at all times and are prettied up when a browser uses JavaScript.

Explain the need of display mode in MVC?

Display mode displays views depending on the device the user has logged in with. So we can create different views for different devices and display mode will handle the rest.

For example we can create a view “index cshtml.” which will render for the desktop computers and index.mobile.cshtml for mobile devices. Now when an end user sends a request to the MVC application, display mode checks the “user agent” headers and renders the appropriate view to the device accordingly.

How can we validate using facebook or twitter accounts (MVC OAuth) ?

 One of the most boring process for an end user is registering on a site. Sometimes those long forms and email validation just puts off the user. So how about making things easy by validating the users using their existing facebook / twitter / linkedin / etc accounts. So the user uses something which he already has while the site is assured that this user is a proper user.

 This is achieved by using MVC OAuth (Open standard for authorization).

Using MVC Oauth is a three step process:-

 Register your MVC application / website with the external site i.e. facebook , twitter etc. Once you register your app you get an ID and key from the external site. Below is snap shot of how facebook gives the ID and Key. In FB they term the key as the “App secret”. This process varies from site to site. So FB can have X steps while twitter can X+1.

Next step is to open “AuthConfig.cs” and you will see lot of readymade code to user your ID and Key. So use the appropriate method as per site and provide the ID and Key.

Now if you run your application you should get a link to FB login as shown in the below

screen. So if you login in FB

it will redirect to your MVC application.

What is DI in MVC?

 It is based on separating component behavior from dependency resolution without object intervention.

The advantages of using the Dependency Injection are

  • Reduces class coupling
  • Increases code reuse
  • Improves code maintainability
  • Improves application testing

 

Why Inject Controller Dependency? 

You can create component directly inside the controller instead of inject them. In that case the controller will be strongly coupled on those components. If any component's implementation is changed or new version of that component is released then you must change controller class itself.

Another problem you will face when you will write unit test. You cannot run unit tests of those controllers independently (within isolation). You cannot take mocking features from unit testing framework. Without mocking, you cannot run unit test of your code in a isolated environment.

 

 

What is new in MVC 5 ?

 

Below are the new features in MVC 5 :-

 

One ASP.NET

 

Attribute based routing Asp.Net Identity

 

Bootstrap in the MVC template Authentication Filters

 

Filter overrides

 

New Scaffolding system

.
All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OKSubscriptions powered by Strikingly