Skip to main content

ASP.NET

Author @rihemebh

ASP stands for : Active Server Pages

ASP.NET is a popular web-development framework for building web apps on the .NET platform.

ASP.NET Core

ASP.NET Core is the open-source version of ASP.NET

ASP.NET Core MVC

mvc

1. Controllers

1.1. Actions

Actions are the Methods within a controller

Every method could return an object that implements the IActionResult :

ViewResultContentResultRedirectToActionResultRedirectToRouteResultStatusCodeResult

|Rendering the HTMLfile

returns view|Returns a message and not all the HTML page|Redirect to specified action instead of rendering the HTML

returns RedirectToAction(ActionName:["name"] , ControllerName : ["name"]) |Redirect to action from the specified URL defined in RouteConfig file

returns RedirectToRoute(new{controller = ["controllename"], action = ["About"] })|returns http status code like 200 / 404 / 500|

We could Pass parameters to actions by :

The Request propertyThe FormCollection objectThe Request BodyRouting -RouteData Property

1.2. Passing data to the view

Adding Information: (In the controller)
ViewBag
ViewBag.Message = “some text”;
ViewBag.ServerTime = DateTime.Now;
ViewData
ViewData["Message"] = "some text";
ViewData["ServerTime"] = DateTime.Now;
Retrieving Information: (In the view)
Retrieving Information ViewBag
<p>
Message is: @ViewBag.Message

Server time is: @ViewBag.ServerTime.ToString()
</p>
Retrieving Information ViewData
<p>
Message is: @ViewData["Message"] //ViewBag.Message
Server time is: @((DateTime)ViewData["ServerTime"])
</p>

Ps : @ in the html file means server-side code see more

1.3. Routing

Routing is responsible for matching incoming HTTP requests and dispatching those requests to the app's executable endpoints.

Route Stucture

/{controller}/{action}/{param}

Declaration

In startups.cs file :

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseRouting();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{action: <actionname>}/{controller:<controllername>}/{id?}");
});
}

We can use annotaions instead of the declaration

Example:

   [Route("api/[action]")]
public class ProductsController : Controller
{
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
...


}

[Route("api")]
public class CtegoryController : Controller
{
[Route("route")]
[ActionName("get")]
[HttpGet("{id}")]
public IActionResult GetCategories(int id)
{
// ...
}

Passing Data from the request to the controller

Model binding

ASP.NET Core MVC model binding converts client request data (form values, route data, query string parameters, HTTP headers) into objects that the controller can handle

2. View Component

2.1. Razor

  • Comments
@* comment text *@
  • Code

Example 1 : Displaying dynamic data

@* if viewBag.price = 9 *@
@ViewBag.Price * 2 @* Result: 9 * 2 *@
@(ViewBag.Price * 2) @* Result: 18 *@

Example 2 : if we want to write a bloc of code inside the HTML

@{
@* code C## *@
}

2.2. HTML Helpers

Razor Generate html code from helpers

@HTML.ActionLink("Click here to view photo 1", "Display" , "Photo" , new { id = 1})

@* equivalent to *@

<a href="/photo/display/1">Click here to view photo 1<a/>
@URL.Action()
<img src="@Url.Action('GetImage', new {id = 1})" />

@* equivalent to *@

<img src="/photo/getimage/1" />

3. Models

public class Student
{

public int StudentId { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Description { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public bool State { get; set; }
}

In the Controller :

return View("<htmlFileName>", Student);

In the View :

@Model.Name

Forms

Diplaying a form

@using (Html.BeginForm()){

@* generate a form from the model class *@
@Html.EditorForModel()
}
Generate a LabelGenerate Input fieldGenerate Checkbox FieldGenerate Radiobox FieldGenerate DropedpwnListForm Validation
@Html.LabelFor(model=> model.Name)@Html.EditorFor(model=> model.Name)@Html.checkboxFor(model=> model.state)@Html.RadioButtonFor(model=> model.state)@Html.DropdownListFor(model=>model.attr, new SelectItelList[]{@*putting data*@}, "Message")@Html.ValidationSummary()

@Html.ValidationMessageFor(model => model.Name)|

Specify the action to be executed after submit

Html.BeginForm("<actionName>","<ControllerName>")

Annotions

=> Customize the form fields

public class Student
{
public int StudentId { get; set; }
[Required]
[Display(Name="My Name")] // to costumize the label in the form
public string Name { get; set; }

[Range(0,100)] // specify min nd max
public int Age { get; set; }

[DataType(DataType.multilineText)] // to generate a textarea in the form
public string Description { get; set; }

[StringLength(8)]
public string phone { get; set; }

[RegularExpression("^.+@.+(\.).+$")]
public string email { get; set; }

public bool State { get; set; }
}