SlideShare a Scribd company logo
devcoach.com
ASP.NET MVC & HTML 5
Daniel Fisher | devcoach
devcoach.com
HTML 5 – A new Era?
• … or back to the 90's
devcoach.com
What is new?
• HTML 5
– A few tags
– … Less Markup
• CSS 3
– Rounded corners
– Drop shadow?
– Media Queries
– … Less Definition
• EcmaScript 5
– Web Sockets
– Server Sent Events
– … Less Code
devcoach.com
A new ASP.NET Style
• It's not Web Forms!
devcoach.com
What is there
• Maintain Clean Separation of Concerns
• Extensible and Pluggable
• Enable clean URLs and HTML
• Build on to of a mature platform
devcoach.com
Whats the difference to Web Forms
• File System Based
• Event based Server Forms
– Makes adoption easy for e.g. VB forms devs.
– Process logic is coupled with page life-cycle.
• Difficult to test using automated tests.
• Server Controls
– Easy because they render the HTML for you.
– Often not so nice because they render it the way
they want.
devcoach.com
devcoach.com
What Do They Have In Common?
• Visual Studio web designer
• Master pages
• Membership/Roles/Profile providers
• Globalization
• Caching
devcoach.com
The MVC Pattern
• The request hits the controller
• Loads the model
• Returns the view to return to the client
Controller
Model
View
devcoach.com
IIS sends Response
ViewResult.Render
ViewResult locates
corresponding View
ActionResult.
ExecuteResult
ActionResult builds
ViewData / Model
Controller.{Action}Controller.ExecuteIControllerFactory
IHttpHandler.
ProcessRequest
MvcRouteHandler
(IHttpHandler)
IRouteHandler.
GetHttpHandler
URLRoutingModule
IIS takes Request
devcoach.com
First of all think of the URLs
• It's in the nature of the pattern that it makes
you think before you code!
devcoach.com
Nice URLs
• REST-like
• Fits with the nature of the web
– MVC exposes the stateless nature of HTTP
• Friendlier to humans
• Friendlier to web crawlers
– Search engine optimization (SEO)
devcoach.com
Defining Routes
routes.Ignore("*.svc");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new
{
controller = "Home",
action = "Index",
id = ""
});
devcoach.com
Default Parameters
routes.Ignore("*.svc");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
devcoach.com
Controllers
• Base Controller Class
– Basic Functionality most folks will use
• IController Interface
– Ultimate Control for the Control Freak
• IControllerFactory
– For plugging in your own stuff (IOC, etc)
devcoach.com
Controller – Regular APIs
public class Controller : IController {
…
protected virtual void Execute(ControllerContext controllerContext);
protected virtual void HandleUnknownAction(string actionName);
protected virtual bool InvokeAction(string actionName);
protected virtual void InvokeActionMethod(MethodInfo methodInfo);
protected virtual bool OnError(string actionName,
MethodInfo methodInfo, Exception exception);
protected virtual void OnActionExecuted(FilterExecutedContext
filterContext);
protected virtual bool OnActionExecuting(FilterExecutedContext
filterContext);
protected virtual void RedirectToAction(object values);
protected virtual void RenderView(string viewName,
string masterName, object viewData);
}
devcoach.com
Controllers & Actions
public ActionResult Index()
{
return View();
}
devcoach.com
Action Default Values
public ActionResult View(
[DefaultValue(1)]
int page)
{
return View();
}
devcoach.com
Results
• ActionResult
• JsonResult
• ...
devcoach.com
Action Attributes
• HttpPost, HttpGet, HttpDelete, RequiresHttps
• Authorize
• ...
devcoach.com
Action Filters
• Allow code to be wrapped around controller
actions and view results
• Similar to HttpModules
• Provide a mechanism for removing cross
cutting code (logging, authorization, etc.)
from controller classes
devcoach.com
Action Filters
public class MyFilter
: ActionFilterAttribute
{
public override void OnActionExecuting(
ActionExecutingContext filterContext)
{
// Your code here…
}
}
devcoach.com
Passing Data
public ActionResult Index()
{
ViewData["Message"] =
"Welcome to ASP.NET MVC!";
return View();
}
devcoach.com
Passing Dynamic Data
public ActionResult Index()
{
ViewModel.Message =
"Welcome to ASP.NET MVC!";
return View();
}
devcoach.com
Passing Typed Data
public ActionResult Index()
{
var p = new Person();
return View(p);
}
devcoach.com
Model Binder
public ActionResult Save(Person p)
{
// No need to cope with Form/QueryString
return View(p);
}
devcoach.com
Asyncronous Actions
public class PortalController : AsyncController
{
public void NewsAsync(string city)
{
AsyncManager.OutstandingOperations.Increment();
NewsService newsService = new NewsService();
newsService.GetHeadlinesCompleted +=
(sender, e) =>
{
AsyncManager.Parameters["headlines"] = e.Value;
AsyncManager.OutstandingOperations.Decrement();
};
newsService.GetHeadlinesAsync(city);
}
public ActionResult NewsCompleted(string[] headlines)
{
return View(
"News", new ViewStringModel { NewsHeadlines = headlines });
}
devcoach.com
Value Provider
namespace System.Web.Mvc
{
public interface IValueProvider
{
bool ContainsPrefix(string prefix);
ValueProviderResult GetValue(string key);
}
}
devcoach.com
Views
• Pre-defined and extensible rendering
helpers
– Can use .ASPX, .ASCX, .MASTER, etc.
– Can replace with other view technologies:
• Template engines (NVelocity, Brail, …).
• Output formats (images, RSS, JSON, …).
• Mock out for testing.
– Controller sets data on the View
• Loosely typed or strongly typed data
devcoach.com
ASPX Views
Untyped
<%@ Page Inherits="ViewPage<dynamic>" %>
Typed
<%@ Page Inherits="ViewPage<Product>" %>
devcoach.com
Razor Views
Untyped
Typed
@model Product
devcoach.com
View Engine
public abstract class ViewEngineBase
{
public abstract void RenderView(
ViewContext viewContext);
}
devcoach.com
View Engine
• View Engines render output
• You get WebForms by default
• Can implement your own
– MVCContrib has ones for Brail, Nvelocity
– NHaml is an interesting one to watch
• View Engines can be used to
– Offer new DSLs to make HTML easier to write
– Generate totally different mime/types
• Images
• RSS, JSON, XML, OFX, etc.
• VCards, whatever.
devcoach.com
ASPX Output
• Response Write
– <%= "<b>Text with markup</b>" %>
• Html Encoding
– <%: "<b>Text with encoded markup</b>"%>
devcoach.com
Razor Output
• Response Write
– @(new HtmlString("<b>Text with markup</b>"))
• Html Encoding
– @"<b>Text with encoded markup</b>"
devcoach.com
Html Helper
• Html.Form()
• Html.ActionLink()
• Url.Content()
devcoach.com
Strongly Typed Helpers
• Html.TextBoxFor(m=>m.Name)
• Html.TextAreaFor()
• Html.ValidationMessageFor()
devcoach.com
Templated Helpers
• Display Helper Methods
– Html.Display()
– Html.DisplayFor()
– Html.DisplayForModel()
• Edit Helper Methods
– Html.Editor()
– Html.EditorFor()
– Html.EditorForModel()
devcoach.com
Assign Template
• By Type:
DateTime.ascx
• By Name:
Html.DisplayForModel(“MyTemplate.ascx”);
• By UIHint
[UIHint("MyPropertyTemplate")]
public string Title { get; set; }
[HiddenInput]
devcoach.com
Partial Views
Html.RenderPartial()
• Renders UI
devcoach.com
Rendered Actions
Html.RenderAction()
• Invokes action that renders UI
– Menus
– Banner Ads
– Shopping Carts
Any UI that appears in multiple pages and requires
business logic
devcoach.com
Areas
AreaRegistration.RegisterAllAreas();
• Enables you to maintain a clear separation of
functionality in a single project
devcoach.com
Area Registration
public class BlogAreaRegistration
: AreaRegistration
{
public override string AreaName
{
get { return "blog"; }
}
public override void RegisterArea(
AreaRegistrationContext context)
{
//Register Routes
}
}
devcoach.com
Validation
• Define rules in Model
• Server Side Validation
• Client Side Validation
devcoach.com
Validation Providers
• Data Annotation (Default)
• Enterprise Library
• XML
• Anything you want…
devcoach.com
Data Annotations
• [Required]
• [Range]
• [RegularExpression]
• [StringLength]
• [CustomValidator]
devcoach.com
Client Side Validation jQuery
<script
src="@Url.Content("~/Scripts/jquery-1.4.1.min.js")"
type="text/javascript"></script>
<script
src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"
type="text/javascript"></script>
<script
src="@Url.Content("~/Scripts/jquery.validate.min.js")"
type="text/javascript"></script>
<script
src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"
type="text/javascript"></script>
<% Html.EnableClientValidation(); %>
devcoach.com
everything is extensible
• Custom routing handlers (IRouteHandler)
• Custom handlers (IHttpHandler)
• Custom controllers (IController,
IControllerFactory)
• Custom views (IViewEngine )
• Custom view locator (IViewLocator)
• Custom views (IViewDataContainer)

More Related Content

What's hot (20)

PDF
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
PDF
Алексей Швайка "Bundling: you are doing it wrong"
Fwdays
 
PDF
MVC 1.0 als alternative Webtechnologie
OPEN KNOWLEDGE GmbH
 
PDF
Selenium bootcamp slides
seleniumbootcamp
 
PPTX
Ankor Presentation @ JavaOne San Francisco September 2014
manolitto
 
PDF
Webdriver cheatsheets summary
Alan Richardson
 
PDF
JavaLand 2014 - Ankor.io Presentation
manolitto
 
PDF
Web sockets in Angular
Yakov Fain
 
PDF
Backbone JS for mobile apps
Ivano Malavolta
 
PPTX
Sitecore MVC: Converting Web Forms sublayouts
nonlinear creations
 
PDF
JavaScript and jQuery for SharePoint Developers
Rob Windsor
 
PPTX
Developing Complex WordPress Sites without Fear of Failure (with MVC)
Mike Schinkel
 
PDF
Automation Abstraction Layers: Page Objects and Beyond
Alan Richardson
 
PDF
The Time for Vanilla Web Components has Arrived
Gil Fink
 
PDF
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Iakiv Kramarenko
 
PPTX
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Roy de Kleijn
 
PDF
Building search app with ElasticSearch
Lukas Vlcek
 
PPTX
RapidApp - YAPC::NA 2014
Henry Van Styn
 
PPTX
Discuss About ASP.NET MVC 6 and ASP.NET MVC 5
Aaron Jacobson
 
PDF
Using Selenium to Improve a Teams Development Cycle
seleniumconf
 
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
Алексей Швайка "Bundling: you are doing it wrong"
Fwdays
 
MVC 1.0 als alternative Webtechnologie
OPEN KNOWLEDGE GmbH
 
Selenium bootcamp slides
seleniumbootcamp
 
Ankor Presentation @ JavaOne San Francisco September 2014
manolitto
 
Webdriver cheatsheets summary
Alan Richardson
 
JavaLand 2014 - Ankor.io Presentation
manolitto
 
Web sockets in Angular
Yakov Fain
 
Backbone JS for mobile apps
Ivano Malavolta
 
Sitecore MVC: Converting Web Forms sublayouts
nonlinear creations
 
JavaScript and jQuery for SharePoint Developers
Rob Windsor
 
Developing Complex WordPress Sites without Fear of Failure (with MVC)
Mike Schinkel
 
Automation Abstraction Layers: Page Objects and Beyond
Alan Richardson
 
The Time for Vanilla Web Components has Arrived
Gil Fink
 
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Iakiv Kramarenko
 
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Roy de Kleijn
 
Building search app with ElasticSearch
Lukas Vlcek
 
RapidApp - YAPC::NA 2014
Henry Van Styn
 
Discuss About ASP.NET MVC 6 and ASP.NET MVC 5
Aaron Jacobson
 
Using Selenium to Improve a Teams Development Cycle
seleniumconf
 

Viewers also liked (10)

PDF
Hindi Jan Lokpal
Anoochan Pandey
 
PDF
Jan Lokpal VS Sarkari Lokpal
Anoochan Pandey
 
PPTX
2011 - DotNetFranken: ASP.NET MVC Localization
Daniel Fisher
 
PPTX
2015 JavaScript introduction
Daniel Fisher
 
PPT
Fstep Webinar: Beyond The Funnel Mentality
JenniferHai
 
PPTX
Robots in recovery
Ye Eun Yoon
 
PDF
Arbonne One On One
tpohawpatchoko
 
PPTX
Social Good Summit Presentation
Benjamin Johnson
 
PPT
CONTRACT ENGINEERING SERVICES
ceseng
 
PPTX
Sistemas constructivos de la civilización azteca
Hector Jimenez Vasquez
 
Hindi Jan Lokpal
Anoochan Pandey
 
Jan Lokpal VS Sarkari Lokpal
Anoochan Pandey
 
2011 - DotNetFranken: ASP.NET MVC Localization
Daniel Fisher
 
2015 JavaScript introduction
Daniel Fisher
 
Fstep Webinar: Beyond The Funnel Mentality
JenniferHai
 
Robots in recovery
Ye Eun Yoon
 
Arbonne One On One
tpohawpatchoko
 
Social Good Summit Presentation
Benjamin Johnson
 
CONTRACT ENGINEERING SERVICES
ceseng
 
Sistemas constructivos de la civilización azteca
Hector Jimenez Vasquez
 
Ad

Similar to 2011 NetUG HH: ASP.NET MVC & HTML 5 (20)

PDF
ASP.NET MVC 2.0
Buu Nguyen
 
PPTX
Asp.net With mvc handson
Prashant Kumar
 
PPT
CTTDNUG ASP.NET MVC
Barry Gervin
 
PPTX
Introduction to ASP.Net MVC
Sagar Kamate
 
PPTX
ASP.NET MVC 5 - EF 6 - VS2015
Hossein Zahed
 
PDF
Mastering asp.net mvc - Dot Net Tricks
Gaurav Singh
 
PPTX
Mvc
Furqan Ashraf
 
PDF
ASP.NET MVC 5 Building Your First Web Application (A Beginner S Guide
Alicia Buske
 
PDF
MVC Interview Questions PDF By ScholarHat
Scholarhat
 
PPTX
Asp.net mvc
erdemergin
 
PPTX
MVC 4
Vasilios Kuznos
 
PPTX
Getting started with MVC 5 and Visual Studio 2013
Thomas Robbins
 
PDF
ASP.NET MVC - Whats The Big Deal
Venketash (Pat) Ramadass
 
PPTX
ASP.NET MVC Fundamental
ldcphuc
 
PPTX
Intro ASP MVC
KrishnaPPatel
 
PPTX
ASP.NET Presentation
Rasel Khan
 
PPTX
ASP .NET MVC Introduction & Guidelines
Dev Raj Gautam
 
PDF
ASP NET MVC in Action 1st Edition Jeffrey Palermo
sysolkadieqj
 
PPTX
Hanselman lipton asp_connections_ams304_mvc
denemedeniz
 
PPS
Introduction To Mvc
Volkan Uzun
 
ASP.NET MVC 2.0
Buu Nguyen
 
Asp.net With mvc handson
Prashant Kumar
 
CTTDNUG ASP.NET MVC
Barry Gervin
 
Introduction to ASP.Net MVC
Sagar Kamate
 
ASP.NET MVC 5 - EF 6 - VS2015
Hossein Zahed
 
Mastering asp.net mvc - Dot Net Tricks
Gaurav Singh
 
ASP.NET MVC 5 Building Your First Web Application (A Beginner S Guide
Alicia Buske
 
MVC Interview Questions PDF By ScholarHat
Scholarhat
 
Asp.net mvc
erdemergin
 
Getting started with MVC 5 and Visual Studio 2013
Thomas Robbins
 
ASP.NET MVC - Whats The Big Deal
Venketash (Pat) Ramadass
 
ASP.NET MVC Fundamental
ldcphuc
 
Intro ASP MVC
KrishnaPPatel
 
ASP.NET Presentation
Rasel Khan
 
ASP .NET MVC Introduction & Guidelines
Dev Raj Gautam
 
ASP NET MVC in Action 1st Edition Jeffrey Palermo
sysolkadieqj
 
Hanselman lipton asp_connections_ams304_mvc
denemedeniz
 
Introduction To Mvc
Volkan Uzun
 
Ad

More from Daniel Fisher (20)

PPTX
MD DevdDays 2016: Defensive programming, resilience patterns & antifragility
Daniel Fisher
 
PPTX
NRWConf, DE: Defensive programming, resilience patterns & antifragility
Daniel Fisher
 
PPTX
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...
Daniel Fisher
 
PPTX
2015 - Basta! 2015, DE: JavaScript und build
Daniel Fisher
 
PPTX
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...
Daniel Fisher
 
PDF
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...
Daniel Fisher
 
PPTX
2011 - Dotnet Information Day: NUGET
Daniel Fisher
 
PPTX
2011 - DNC: REST Wars
Daniel Fisher
 
PPTX
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
Daniel Fisher
 
PPTX
2010 - Basta!: IPhone Apps mit C#
Daniel Fisher
 
PPTX
2010 - Basta: ASP.NET Controls für Web Forms und MVC
Daniel Fisher
 
PPTX
2010 Basta!: Massendaten mit ADO.NET
Daniel Fisher
 
PPTX
2010 - Basta!: REST mit ASP.NET MVC
Daniel Fisher
 
PPTX
2009 - Microsoft Springbreak: IIS, PHP & WCF
Daniel Fisher
 
PPTX
2009 - NRW Conf: (ASP).NET Membership
Daniel Fisher
 
PPTX
2009 Dotnet Information Day: More effective c#
Daniel Fisher
 
PPTX
2009 - DNC: Silverlight ohne UI - Nur als Cache
Daniel Fisher
 
PPTX
2009 - Basta!: Url rewriting mit iis, asp.net und routing engine
Daniel Fisher
 
PPTX
2009 - Basta!: Agiles requirements engineering
Daniel Fisher
 
PPTX
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
Daniel Fisher
 
MD DevdDays 2016: Defensive programming, resilience patterns & antifragility
Daniel Fisher
 
NRWConf, DE: Defensive programming, resilience patterns & antifragility
Daniel Fisher
 
.NET Developer Days 2015, PL: Defensive programming, resilience patterns & an...
Daniel Fisher
 
2015 - Basta! 2015, DE: JavaScript und build
Daniel Fisher
 
2015 - Basta! 2015, DE: Defensive programming, resilience patterns & antifrag...
Daniel Fisher
 
2015 - Network 2015, UA: Defensive programming, resilience patterns & antifra...
Daniel Fisher
 
2011 - Dotnet Information Day: NUGET
Daniel Fisher
 
2011 - DNC: REST Wars
Daniel Fisher
 
2010 - Basta!: REST mit WCF 4, Silverlight und AJAX
Daniel Fisher
 
2010 - Basta!: IPhone Apps mit C#
Daniel Fisher
 
2010 - Basta: ASP.NET Controls für Web Forms und MVC
Daniel Fisher
 
2010 Basta!: Massendaten mit ADO.NET
Daniel Fisher
 
2010 - Basta!: REST mit ASP.NET MVC
Daniel Fisher
 
2009 - Microsoft Springbreak: IIS, PHP & WCF
Daniel Fisher
 
2009 - NRW Conf: (ASP).NET Membership
Daniel Fisher
 
2009 Dotnet Information Day: More effective c#
Daniel Fisher
 
2009 - DNC: Silverlight ohne UI - Nur als Cache
Daniel Fisher
 
2009 - Basta!: Url rewriting mit iis, asp.net und routing engine
Daniel Fisher
 
2009 - Basta!: Agiles requirements engineering
Daniel Fisher
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
Daniel Fisher
 

Recently uploaded (20)

PPTX
declaration of Variables and constants.pptx
meemee7378
 
PDF
Difference Between Kubernetes and Docker .pdf
Kindlebit Solutions
 
PDF
Why Edge Computing Matters in Mobile Application Tech.pdf
IMG Global Infotech
 
PDF
Rewards and Recognition (2).pdf
ethan Talor
 
PPTX
IObit Uninstaller Pro 14.3.1.8 Crack Free Download 2025
sdfger qwerty
 
PDF
Code Once; Run Everywhere - A Beginner’s Journey with React Native
Hasitha Walpola
 
PDF
>Nitro Pro Crack 14.36.1.0 + Keygen Free Download [Latest]
utfefguu
 
PDF
LPS25 - Operationalizing MLOps in GEP - Terradue.pdf
terradue
 
PPTX
IObit Driver Booster Pro 12.4-12.5 license keys 2025-2026
chaudhryakashoo065
 
PDF
The Rise of Sustainable Mobile App Solutions by New York Development Firms
ostechnologies16
 
PPTX
CV-Project_2024 version 01222222222.pptx
MohammadSiddiqui70
 
PDF
WholeClear Split vCard Software for Split large vCard file
markwillsonmw004
 
PPTX
Avast Premium Security crack 25.5.6162 + License Key 2025
HyperPc soft
 
PPTX
NeuroStrata: Harnessing Neuro-Symbolic Paradigms for Improved Testability and...
Ivan Ruchkin
 
PDF
>Wondershare Filmora Crack Free Download 2025
utfefguu
 
PDF
Automated Test Case Repair Using Language Models
Lionel Briand
 
PDF
Telemedicine App Development_ Key Factors to Consider for Your Healthcare Ven...
Mobilityinfotech
 
PDF
IObit Uninstaller Pro 14.3.1.8 Crack for Windows Latest
utfefguu
 
PPTX
ERP - FICO Presentation BY BSL BOKARO STEEL LIMITED.pptx
ravisranjan
 
PPTX
Wondershare Filmora Crack 14.5.18 + Key Full Download [Latest 2025]
HyperPc soft
 
declaration of Variables and constants.pptx
meemee7378
 
Difference Between Kubernetes and Docker .pdf
Kindlebit Solutions
 
Why Edge Computing Matters in Mobile Application Tech.pdf
IMG Global Infotech
 
Rewards and Recognition (2).pdf
ethan Talor
 
IObit Uninstaller Pro 14.3.1.8 Crack Free Download 2025
sdfger qwerty
 
Code Once; Run Everywhere - A Beginner’s Journey with React Native
Hasitha Walpola
 
>Nitro Pro Crack 14.36.1.0 + Keygen Free Download [Latest]
utfefguu
 
LPS25 - Operationalizing MLOps in GEP - Terradue.pdf
terradue
 
IObit Driver Booster Pro 12.4-12.5 license keys 2025-2026
chaudhryakashoo065
 
The Rise of Sustainable Mobile App Solutions by New York Development Firms
ostechnologies16
 
CV-Project_2024 version 01222222222.pptx
MohammadSiddiqui70
 
WholeClear Split vCard Software for Split large vCard file
markwillsonmw004
 
Avast Premium Security crack 25.5.6162 + License Key 2025
HyperPc soft
 
NeuroStrata: Harnessing Neuro-Symbolic Paradigms for Improved Testability and...
Ivan Ruchkin
 
>Wondershare Filmora Crack Free Download 2025
utfefguu
 
Automated Test Case Repair Using Language Models
Lionel Briand
 
Telemedicine App Development_ Key Factors to Consider for Your Healthcare Ven...
Mobilityinfotech
 
IObit Uninstaller Pro 14.3.1.8 Crack for Windows Latest
utfefguu
 
ERP - FICO Presentation BY BSL BOKARO STEEL LIMITED.pptx
ravisranjan
 
Wondershare Filmora Crack 14.5.18 + Key Full Download [Latest 2025]
HyperPc soft
 

2011 NetUG HH: ASP.NET MVC & HTML 5