今天繼續來完成網站範例,前幾天完成了註冊與登入功能,接下來就是登入後顯示會員相關的頁面囉~
首先要新加入一個控制器名為MemberController
,加入時選擇「MVC5控制器-空白」即可,如下圖:
加入後自行會產生 Index()
動作方法,如下面Code:
public class MemberController : Controller
{
// GET: Member
public ActionResult Index()
{
return View();
}
}
我們想要呈現像Home/Index
類似的頁面,同樣顯示產品列表內容,只是導覽列要變更成會員才能看到的資訊,所以我們將Index()
內容修改如下Code:
[Authorize]
public class MemberController : Controller
{
dbShoppingCarEntities db = new dbShoppingCarEntities();
// GET: Member
public ActionResult Index()
{
var products = db.table_Product.OrderByDescending(m => m.Id).ToList();
return View("../Home/Index", "_LayoutMember", products);
// viewName也可以將完整路徑寫出來,但上方寫法較為簡潔
//return View("~/Views/Home/Index.cshtml", "_LayoutMember", products);
}
}
簡單說明上方Code,同樣先建立db
實體物件,並且將產品資料撈出來作為Model傳入View。另外Controller上方加入[Authorize]
屬性,代表此控制器底下的動作方法都要經過授權過濾器驗證,未通過驗證會顯示下圖錯誤:
DAY 12的時候我們講過,想要指定未通過授權時要執行的動作方法,必須先在方案總管底下專案找到Web.Config
這個檔案,然後在<system.web>
的標籤內新增如下方Code:
<authentication mode="Forms">
<forms loginUrl="~/Home/Login"/>
</authentication>
另外這邊新的重點在於,可以回傳指定的View頁面與套用版面,注意viewName
參數路徑前面加上..
可以更簡潔的表達,或是直接將完整路徑寫出來也可以。
登入帳密後畫面呈現如下圖:
由上面可知,我們不需要為Member/Index
再建立新的檢視頁面,僅需運用原本的首頁與搭配不同套版頁面。
接著是會員登出的部分,在MemberController
底下加入Logout()
動作方法,如下Code:
public ActionResult Logout()
{
//using System.Web.Security;
FormsAuthentication.SignOut();
return RedirectToAction("Login", "Home");
}
這樣就完成啦~來重新執行看看是否能正常登出,並且應該要導至登入頁面。
今天就先到這邊好了,最近實在有點忙,明天我們繼續來撰寫購物車相關的部分,明天見~