2022-02-22 20:00:01 +00:00
|
|
|
== ASP.NET ==
|
|
|
|
|
|
|
|
ASP.NET is an open source cross platform web framework for C#
|
2022-02-23 19:45:01 +00:00
|
|
|
|
|
|
|
== [[MVC]] ==
|
|
|
|
|
|
|
|
See [[MVC]] as a concept.
|
|
|
|
|
|
|
|
The MVC model as it pertains to ASP.NET is very straightforward. There are
|
|
|
|
Models, which consist of objects, gernerally in the APPNAME.Models namespace.
|
|
|
|
Next there are Controllers, which are classes with methods for each operations
|
|
|
|
on the site (IE view/create), etc.
|
|
|
|
|
|
|
|
|
|
|
|
== Site structure ==
|
|
|
|
|
|
|
|
For some controller, XYZController, the base, or Index() of the controller, can
|
|
|
|
be accessed via mysite.com/XYZ. For other methods on the site, such as create, one must call
|
|
|
|
mysite.com/XYZ/Create. This applies for all methods in the Controller class
|
|
|
|
following signature `public IActionResult MyCustomMethod()`. These usually
|
2022-02-23 20:00:01 +00:00
|
|
|
end with a `return View()`. These methods are called Actions or Action Methods.
|
|
|
|
|
2022-02-25 16:45:01 +00:00
|
|
|
== Models ==
|
|
|
|
|
|
|
|
Models are objects in asp.net that represent entries in database tables, or
|
|
|
|
data to be processed by the backend of the application.
|
|
|
|
|
|
|
|
=== Model validation ===
|
|
|
|
|
|
|
|
Member values in a model can be validated via validation attributes. These
|
|
|
|
attributes are
|
|
|
|
|
|
|
|
* Required
|
|
|
|
* StringLength(x)
|
|
|
|
* DataType(type)
|
|
|
|
* Display(Name = "Some display name")
|
|
|
|
* Range(0,100)
|
|
|
|
* ValidateNever
|
|
|
|
* CreditCard
|
|
|
|
* EmailAddress
|
|
|
|
* Phone
|
|
|
|
* Url
|
|
|
|
* etc...
|
|
|
|
|
|
|
|
All of the validation attributes are placed in square brackets one lines above
|
|
|
|
the member values of the model. For example,
|
|
|
|
|
|
|
|
{{{
|
|
|
|
[Phone]
|
|
|
|
[Required]
|
|
|
|
public string phoneNumber { get; set; }
|
|
|
|
}}}
|
|
|
|
|
|
|
|
All validation attributes can also be passed an argument of name `ErrorMessage`
|
|
|
|
of type string, and will be displayed on the webpage when the value is not
|
|
|
|
given.
|
|
|
|
|
2022-02-23 20:00:01 +00:00
|
|
|
== Controllers ==
|
|
|
|
|
|
|
|
=== Return types ===
|
|
|
|
|
|
|
|
* `View()`
|
|
|
|
* Returns the associated view
|
|
|
|
* Can be passed a model for data to be parsed by the view
|
|
|
|
* `RedirectToAction("Index")`
|
|
|
|
* Redirects user to some page
|
|
|
|
* Page is specified via the name of the Function as the Paramater
|
|
|
|
|
|
|
|
=== Action paramaters ===
|
|
|
|
|
|
|
|
Each action can take paramaters. These paramaters are URL paramaters and
|
|
|
|
their names match those sent in the URL. For example,
|
|
|
|
|
|
|
|
`public IActionResult MyAction(string name)` would take the paramater
|
|
|
|
`somesite.xyz/SomeController/MyAction?name=some_name_string`. In the controller,
|
|
|
|
the passed in arguments `name` would hold value `some_name_string` in this
|
|
|
|
instance.
|
2022-02-23 19:45:01 +00:00
|
|
|
|
|
|
|
== Views ==
|
|
|
|
|
|
|
|
A cshtml block may be created using a `@{}` block. Here C# can be placed,
|
|
|
|
however it is always ran by an interpretter at runtime, and is therefore not
|
|
|
|
recomended often.
|
|
|
|
|
2022-02-25 16:45:01 +00:00
|
|
|
=== ActionLink ===
|
|
|
|
|
2022-02-23 19:45:01 +00:00
|
|
|
=== Passing data to views ===
|
|
|
|
|
|
|
|
A view can take paramaters, primarily a single object, via passing it to the
|
|
|
|
`View()` constructor. In the .cshtml file (the view), one must then add the
|
|
|
|
line `@model APPNAME.Models.SomeModel` to specify the exact model type being
|
|
|
|
passed in.
|
|
|
|
|
|
|
|
NOTE: `@using APPNAME.Models` is required at the top of the view
|
|
|
|
|
|
|
|
=== Showing Controller data in views ===
|
|
|
|
|
|
|
|
A view can display data from a passed model via the `@Model.MEMBER_VALUE`
|
|
|
|
syntax anywhere in the HTML.
|
|
|
|
|
|
|
|
=== ViewBag ===
|
|
|
|
|
|
|
|
The ViewBag is an object that can be accessed in the Controller, and any sub
|
|
|
|
type can be apecified. IE `ViewBag.Title = "Some title"` is valid, without
|
|
|
|
declaring Title as a string or even existing first.
|