Step01. 到「管理Nuget套件」安裝 Nlog 及 NLog.Config
閱讀全文〈如何在ASP.NET MVC 加上 NLog〉
ASP.NET MVC ALERT訊息做法
這是一個簡單的問題,說明如下
Step01. 在Action中設定 TempData[“message”] = “此帳號已被註冊”;
[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = await UserManager.FindByNameAsync(model.UserName); if (user != null) { //TempData 只會被讀一次,之後就會失效 TempData["message"] = "此帳號已被註冊"; return View(model); }else { //執行註冊 //完成後,轉頁 } } return View(model); }
Step02.在 _layout.cshtml 中判斷 TempData[“message”] 有沒有值,有值就出現alert
<!DOCTYPE html> <html lang="zh-TW"> <head> @if (TempData["message"] != null) { <script type="text/javascript"> var message = @Html.Raw(Json.Encode(TempData["message"])); alert(message); </script> } </head> <body> @RenderBody() </body> </html>
ASP.NET MVC ModelState.IsValid 說明
在ASP.NET MVC 中使用模型繫結 (Model Binding)時,我們會使用 ModelState 去驗證有沒有綁好,說明如下:
[ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { //有綁好,可以往下做 }else{ //沒有綁好 return View(model); } }
ASP.NET MVC 的 ValidateAntiForgeryToken機制
這是ASP.NET MVC 為防止 CSRF (Cross-Site Request Forgery) 跨站偽造請求的攻擊的設計,作法如下:
Step01. 在 Action 加上 [ValidateAntiForgeryToken] 標籤
[ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { ... return View(); }
Step02. 在 cshtml 就必須要加上 @Html.AntiForgeryToken(),否則會出錯
@using (Html.BeginForm("Login", "Account", FormMethod.Post)) { @Html.AntiForgeryToken() }