MVC Flashcards
Како се иницијализираат properties во една класа?
public string/int/float ime_promenliva {get; set;}
Во C# ако сакаме да поставеме float вредност на некоја променлива, како тоа го правеме?
x = 4.8f
//клучната буква е f
Ако сакаме на страницата да се појави листа од филмови и листа од клиенти, кои се чекорите за да го направеме тоа?
Прво, во акцијата поставуваме еден модел од класа што чува објект за филм и објект за клиенти.
Тој модел го поставуваме во View.
Соодветно, во View правеме приказ на страницата со истиот модел од акцијата.
Како можеме преку HTML таг да преминеме на друг view со друга акција?
<a></a>
Со која C# готова функција може да најдеме некој објект доколку објектите се подредени редоследно?
example:
clients.ElementAt(id) //доколку моделот е од класата Client
Доколку се појави exception дека клиентот не е пронајден, според претходниот пример, како ќе се справеме со тоа?
if (clients.ElementAt(id) == null) { return Content("Not found :("); //ili slicno }
Доколку сакаме да направеме textbox и од полето да ги земеме податоците и да ги прикажиме, што треба да направеме во делот кај контролерот?
1) Креираме акција со соодветно View за приказ на textbox полињата. Ова го правеме во форма, така што формата ќе прима параметри - акција која ќе ги прикажи податоците, контролер.
Моделот со информациите од text полињата, се испраќа со помош на submit button
2) Креираме акција со HttpPost метод на размена на податоци. Преку неа, го земаме моделот што е веќе исполнет од акцијата на точка 1).
Во оваа акција, правеме Redirect на друга акција која што е одговорна за приказ на податоците.
Што е намената на формата во asp.net?
Преку неа, насочуваме со помош на button, од една акција на друга акција.
ex: BeginForm(“InsertNewMovie”, “MovieController”)
Како се иницијализира променлива од типот List а како од типот Movie? //класата е Movie
1) public static List movies = new List() movies { new Movie() {Name, Id, Age . . .}};
2) public static Movie = new Movie { Name, Id, Age . . .};
Како се прави валидација, ако сакаме да го променеме името на лабелата?
[Display(Name = “drugo ime”)]
Како се прави валидација за непополнето поле?
[Required]
Како се прави валидација за ранг?
[Range(0,99, ErrorMessage=”invalid values”)]
Освен постапката до моделот за валидација, каде на друго место треба да се напишат команди за да успее валидацијата и што значат тие команди?
-Во акцијата каде што акцијата го презема View-то на моделот од текст полињата : if(!ModelState.IsValid) { return View("NewMovie", model) } //NewMovie е акцијата со текст полињата //т.е. повторно се враќаме на истиот приказ
Кои се трите параметри на @Html.ActionLink()
Името што ќе се прикаже, име на акција, име на контролер
Што означува - View(“SomeAction”, model)?
Се враќа View што е веќе креирано и како аргумент се предава моделот.
Што треба да се користи како библиотека за валидациите?
using System.ComponentModel.DataAnnotations;
На кој начин може да се превземе URL на слика од база и истата да се вметне вo View?
@Url.Content(Mode.URL)
Доколку имаме креирано скрипта во Scripts директориумот и App под-директориумот и скриптата се чува под името - MusicScripts, како ќе ја вметнеме во View оваа скрипта?
1 ) @section Scripts{
}
2) @Scripts.Render(“~/Scripts/App/MusicScripts.js”)
3) @section Scripts{
$(function () {
$("#album-list img").mouseover(function () { $(this).animate({ height: '+=25', width: '+=25' }).animate({ height: '-=25', width: '-=25'}) })
})
}
Додавање на Ajax скрипта во View?
@section Scripts{
}
//со претходно инсталиран пакет од NuGet //Install-Package Microsoft.jQuery.Unobtrusive.Ajax
Дади пример за креирање на Ajax helper во View.
@Ajax.ActionLink(“Албум на попуст за денес”,
“DailyDeal”,
null,
new AjaxOptions { UpdateTargetId = “dailydeal”,
InsertionMode = InsertionMode.Replace,
HttpMethod = “GET”},
new { @class = “btn btn-default”}
)
arg1 - име на линк
arg2 - која акција од контролерот ќе се повика со соодветно partial view [дел од стр. ќе се рефрешира]
arg4 - arg4.1. -> што ќе се update кога ќе заврши ајах
arg4.2. -> при клик на линкот се заменува
моменталната страница со друга
//другите аргументи се објаснати сами по себе
Како може да се земе random вредност од табелата во базата на некоја класа?
var album = db.Albums.Include(a => a.Artist).Include(a => a.Genre).OrderBy(a => System.Guid.NewGuid()).First();
//model - Album кој содржи објекти од Artist и Genre
Откако преку NuGet ќе го инсталираме соодветниот пакет за податочни табели [Install-Package jquery.datatables -version:1.10.11], како го поставуваме при тоа?
1) Bundle Config - во делот за скрипти додаваме:
”~/Scripts/DataTables/jquery.dataTables.js”,
“~/Scripts/DataTables/dataTables.bootstrap.js”
2) За css, во Content делот додаваме:
”~/Content/DataTables/css/dataTables.bootstrap.css”
3) Kреираме податочна табела во соодветното View:
@section Scripts{
$(document).ready( function () { $("#album").DataTable(); } );
} //album e id-to на табелата која ги содржи //информациите за моделот Album
Како се доделува улога на корисник?
1 чекор: се пополнува табелата во базата на AspNetRoles со кој тип на улога сакаме да доделиме;
2 чекор: во AccountController ја бараме акцијата за регистрирање.
Во првиот (ако не и единствениот) if услов, ја поставуваме следната команда:
await UserManager.AddToRoleAsync(user.Id, “imeNaUloga”);
Како да доделеме различно View на корисник што нема одредена улога?
Во акцијата што не сакаме да ја гледа некој корисник, го правеме следното:
if(!User.IsInRole("Administrator")){ return View("Nekoe drugo view", nekojSiModel); }
Како се врши проширување на кориснички податоци?
1 чекор: во AccountViewModel кај RegisterViewModel поставуваме public string another_info {get; set;}
2 чекор: во Identity model во класата Application User додаваме public string another_info {get; set;}
3 чекор: во AccountController во Register акцијата, во променливата user поставуваме вредноста што ја сакаме: another_info = model.another_info
//но со ова нема да се постави колона во табелата //во базата за дополнителната информација
Како да се креира колона за дополнителната информација во табелата во базата?
Add-Migration name
Update-database
Како се поставува SSL на проект?
Во Properties на проектот, SSL Enabled постави го на True.
Со тоа, URL започнува со https.
Како се регистрира апликација кај друг сервис?
Добиваме Id и други соодветни податоци за корисникот.
Потоа, во App_Start\Startup.Auth.cs има одредени сервиси кои се коментирани. На соодветниот сервис ги бришеме коментарите и ги запишуваме соодветните вредности.
За да може да користеме Entity Framework, кои работи прво треба да ги поставеме?
1) Клучеви на секоја класа/модел
2) Креираме класа за контекст (MovieContext) што наследува од DbContext и во таа класа иницијализираме соодветни функционалности
3) Овозможуваме миграции и додаваме миграции и правеме update на базата
Доколку користеме Individual Account за пермиса, на кој начин се креираат миграции и табели во база?
1)Во Identity controller поставуваме толку табели колку што ни требаат од соодветните модели;
[DbSet movies]
2) Co NuGet поставуваме Enable Migrations, Add-Migration Initial, Update database.
3) Креираме контролери со соодветниот App контекст, и соодветната класа/табела од базата.
4) Доколку треба, во Layout поставуваме соодветни акции со контролери за menu bar.
Како поставуваме Jquery datatables?
1) Co NuGet - Install-Package jquery.datatables -Version:1.10.11 / .15
2) Co NuGet - Install-Package bootbox -Version 4.3.0
Што е функцијата на bootbox?
js is a small JavaScript library which allows you to create programmatic dialog boxes using Bootstrap modals, without having to worry about creating, managing, or removing any of the required DOM elements or JavaScript event handlers.
Втор начин на реализирање некоја функција со jquery и bootbox е со api
1) Креирање на контролер со web api
2) Конфигурација со помош на readme.txt
//подобро е бидејќи не ги менуваме основните //функционалности од контролер
[DeleteConfirmed - Delete]
//api не враќа view туку податоци
Како може да извршиме авторизација [корисниците да пристапуваат само доколку се најавени]?
Во FilterConfig во AppStart, ја пишеме следната команда:
filters.Add(new AuthorizeAttribute());
Доколку сакаме на одредена акција корисниците да можат да пристапат без најава, како го овозможуваме тоа?
Со претходниот чекор + пред акцијата го пишеме следното:
[AllowAnonymous]
Авторизација на цел контролер?
[Authorize] пред контролер или [Authorize] пред некоја акција ако сакаме само за одредена акција да имаме авторизација
Како се доделува авторизација на администратор во апликацијата?
[Authorize(Roles=”Administrator, Editor”)].
Но за ова да успее прво треба да се конфигурираат улогите во базата – AspNetRoles табела, додаваме неколку улоги
Кој контролер и променлива помагаат при креирање/бришење на улога?
AccountController и променливата - _userManager и со наша акција [ex: AddUserToRole()]
Дополнително, во ManageView креираме public класа што вклучува карактеристики што треба да ги има улогата.
Во акцијата AddUserToRole креираме модел од класата во ManageView [ex: AddRoleModel] и во променливата Roles која е листа, чуваме улоги во вид на стринг променливи.
Го враќаме model-от во View.
Како да направеме deployement на веб апликацијата од серверска страна?
десен клик на проектот, и клик на Publish.