Model, tampilan, pengontrol
Namespaces: System.web.*, System.web.mvc, System.web.mvc.*
URL: Basis/pengontrol/tindakan/parameter
APP_START Konfigurasi seperti: bundel, filter, perutean
Pengontrol:
Controller/Controllerbase -> ActionResult
Properti: ValidateRequest, ViewBag, Pengguna, Sesi, Server, Permintaan, Respons, HTTPContext, ControllerContext
Metode: Validasi, aksi aksi
Pengontrol untuk melihat data yang lewat: * Viewbag, ViewData, Tempdata * contoh model yang dibuat di ActionResult, disahkan sebagai parameter view (), di view @model app.models.Person ditentukan, di sisa halaman kami menggunakan model.properterest/Metode
Tampilan:
*.cshtml, sintaksis Razor, @ & @ {...}
@helper, @model, @section name {...}
Properti: HTML, AJAX, TAMBANGAN, ViewContext, Sesi, Pengguna, Konteks, Permintaan, Respons, Server, Cache, Tata Letak
Metode: renderbody (), rendersection (), renderpage (), @styles.render ("url bunde"), @scripts.render ("Bunde URL")
htmlattributes di @html/ajax helters adalah objek anonim, seperti: baru {id = "user"}
Atribut Controller & Action : AllowAnonymous, Otorize, httpget/delete/head/options/patch/post/put, non -action, validateanttiforgerytoken, rute
Tindakan:
[Httpget/post/put/delete] atribut untuk menentukan metode
Hasil: Redirect, parsial, json, javascript, file, konten, tampilan, kosong, httpstatuscode
Tindakan dapat mengembalikan jenis selain ActionResult, seperti String.
Parameter tindakan dilewati sebagai:
Pembantu:
Html:
Metode: Tindakan, ActionLink, RouteLink, BeginForm, Endform, AntiforgeryToken, Display, Label, Metode Terkait Input, Metode Terkait Validasi
Formulir Sampel:
@using (Html.BeginForm("action","controller", FormMethod.Post))
{
@Html.TextBox("tb1")
<button type="submit"/>
}
Ajax:
Metode: ActionLink, RouteLink, Beginform
BeginForm dalam AJAX mirip dengan variasi HTML, dengan penambahan parameter objek AjaxOptions.
AjaxOptions menyediakan opsi tambahan seperti, elemen untuk memperbarui & fungsi panggilan balik.
Sidang:
Pengontrol & Lihat Properti, Berguna untuk Manajemen Sesi.
Browser mendapat cookie sesi ASP.NET_SESSIDID.
Dapat diakses sebagai tipe yang diindeks, menyimpan informasi sesi yang bermanfaat dalam nilai.
Properti dan metode difokuskan pada sesi & kumpulan pasangan kunci/nilai.
Bentuk:
Formulir dapat ditulis dalam html biasa:
<form method="post" action="/Home/NameAge">
<input type="text" name="name" />
<input type="number" name="age" />
<input type="submit"/>
</form>
Dengan metode tindakan yang membuatnya tampak seperti:
[HttpPost]
public ActionResult NameAge(string name, int age)
{
ViewBag.Name = name;
ViewBag.Age = age;
return View();
}
Jenis khusus (Buku, Orang, ...) dapat digunakan sebagai parameter tindakan dalam kasus itu, atribut nama input harus cocok dengan nama tipe properti.
Jika ada parameter tindakan multipel, atribut nama input harus cocok dengan format: parameter.property (person1.name)
Tentukan nilai elemen input apa yang akan diikat ke parameter: indeks aksi publik ([bind (include = "id, name")] orang) {...}
@Html.display/label/editorfor (m => m.age) untuk melakukan pengikatan data.
Atribut anotasi data untuk kondisi model.
Validasi Sisi Server: Lihat: @html.labelfor (m => m.firstname) @html.EditorFor (m => m.firstname) @html.validationMessAgeFor (m => m.firstname) controller: public actionResult index () => view (); [Httppost] index ActionResult publik (orang orang) {if (modelstate.isvalid) {return redirect ("okview"); } return view (guy); }
Unduh File:
Unggah file:
HttppostedFilebase & tipe turunannya digunakan sebagai parameter metode tindakan ketika kami mengunggah file menggunakan formulir.
Lihat Metode HTML.BEGINForm mengambil parameter tambahan: baru {enctype = "multipart/form-data"}
Beraksi kita sebut file.saveas (@"path") untuk menyimpan file,
Properti server dapat digunakan untuk memetakan jalur lokal ke global.
Struktur Dasar:
App_start memiliki file identityconfig.cs & startup.auth.cs
Namespaces Umum Baru: microsoft.aspnet.identity, microsoft.aspnet.identity*, microsoft.owin, microsoft.owin.security, microsoft.owin.security*, system.security.claims
Properti Pengguna di Controller & View dapat digunakan untuk mendapatkan data pengguna. Anggota utama adalah Identity & Isinrole (nama string).
Request.isAuthenticated dalam tampilan untuk memeriksa apakah pengguna diautentikasi.
Pengontrol memiliki AccountController, untuk operasi login/pendaftaran.
Model memiliki AccountViewModels & IdentityModels.
Jenis dasar yang umum digunakan: IdentityUser, IdentityDbContext, UserManager, SignInManager
Jenis Umum:
IdentityUser, IdentityDBContext, UserManager, SignInManager, IAuthenticationManager adalah tipe yang biasa digunakan dalam manajemen akun. Mereka dapat diwarisi & diperluas.
IdentityUser berisi informasi akun pengguna, seperti nama pengguna, hash kata sandi email.
IdentityDBContext adalah konteks database EntityFramework yang digunakan untuk menyimpan informasi pengguna.
UserManager dapat membuat, mencari, dan melakukan operasi terkait pengguna lainnya.
SignInManager dapat masuk pengguna, dalam sesi atau jika ingat kotak centang saya dicentang, dengan cara yang persisten.
IAuthenticationManager dapat keluar dari pengguna.
Database:
Tes Database ada di folder app_data, *.mdf file. String koneksi ada di web.config, dan digunakan oleh ApplicationDBContext.
Database terdiri dari tabel berikutnya: pengguna, peran, pengguna pengguna, UserLogin, USERROLES.
OAuth2.0 & OpenID Connect:
Setelah mendapatkan ID & Rahasia klien, mereka harus ditambahkan di App_Start> startup.Auth.cs
Dalam MVC, jenis login ini disebut login "eksternal".
Peran & Klaim:
Atribut [Otorize] digunakan untuk hanya mengizinkan pengguna yang diautentikasi dalam pengontrol/tindakan.
[Allowanonymous] menimpa itu.
IdentityUserClaim & IdentityUserRole umumnya digunakan.
ApplicationUser/IdentityUser memiliki peran & klaim properti.
Properti UserManager dapat digunakan untuk mengelola klaim/peran untuk pengguna tertentu.
IdentityDBContext/ApplicationDBContext memiliki tabel peran.
RoleManager adalah untuk peran, apa UserManager untuk pengguna.
[Otorize (Users = "...", Roles = "...")] Parameter atribut dapat digunakan untuk lebih lanjut pengontrol/akses tindakan.
Dibangun di atas MVC untuk menyediakan fungsionalitas yang diperlukan untuk pengembangan layanan yang tenang.
App_start memiliki webapiconfig.cs yang menangani konfigurasi API, dan routing API, tidak dilakukan oleh routeConfig.cs
Apicontroller adalah tipe yang diwarisi oleh pengontrol aplikasi.
BaseUrl/Help menyediakan dokumen API yang dihasilkan.
Alat yang umum digunakan untuk pengujian adalah Postman & Fiddler.
Tindakan:
Metode tindakan mencocokkan metode HTTP, yang digunakan untuk mengaksesnya.
Dapat/posting/put/hapus API/controller
Jenis pengembalian tindakan dapat berupa string, int, ienumerable <t> dan sebagainya, atau jenis yang berasal dari ihttpactionResult, seperti ok (), notfound (), ...
Atribut rute di atas metode tindakan, dapat menentukan rute khusus untuk mengaksesnya.
[Frombody] & [Fromuri] dapat digunakan pada parameter metode tindakan untuk menentukan asalnya.
Halaman Bantuan (/BANTUAN) berisi rute API, dan deskripsinya mengenai manajemen akun. Misalnya API/Akun/Register berisi informasi seperti metode HTTP dan parameter yang digunakan.
Daftar:
/Bantuan API/Akun/Register menjelaskan cara membuat akun. Di Postman, kami dapat membuat permintaan pasca ke titik akhir itu, dengan data yang diperlukan dalam tubuh sebagai json X-WWW-Form-Burlencoded atau Raw. Jika kami mendapatkan respons 200 ok, akun dibuat
Masuk / Dapatkan token:
Ini tidak didokumentasikan di halaman bantuan. Kami mendapatkan token dari /token rute. Posting permintaan dengan body x-www-form-urlencoded berisi: grant_type: kata sandi, nama pengguna: email, kata sandi: kata sandi.
Respons ada di dalam tubuh, berisi JSON, kami memerlukan nilai Access_Token untuk membuat permintaan terhadap sumber daya yang dilindungi.
Dapatkan sumber daya yang dilindungi:
Memperoleh sumber daya dari tindakan atau pengontrol yang memiliki atribut [otorisasi] memerlukan token akses.
Kami membuat permintaan mendapatkan API/Nilai dengan header otorisasi dengan nilai: "Bearer Access_Token_Value"
AUTH / OAUTH2.0 & OIDC: