== ASP.NET == ASP.NET is an open source cross platform web framework for C# == [[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 end with a `return View()`. These methods are called Actions or Action Methods. == 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. == 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. == 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. === ActionLink === The `@Html.ActionLink()` function can be placed inside of a `