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()
}
