例如我有一個需求,使用@Html.ActionLink實現不同功能之間的跳轉,有部分Control是在Area之下,這種時候我們應該如何實現區域間的跳轉呢?
錯誤用例:
<ul class="nav navbar-nav"> <li>@Html.ActionLink("主頁", "Index", "Home")</li> <li>@Html.ActionLink("退款申請用例", "Index", "Refund")</li> <li>@Html.ActionLink("微信掃一掃用例", "Index", "ScanQRCode")</li> </ul>
由於我的RefundControl存在於WxPay這個區域下,上述寫法會提示說找不到Refund這個頁面,也對上述寫法生成的完整鏈接是 /Refund,而正確鏈接是 /WxPay/Refund,自然是找不到了,此時我們可以通過定義Html.ActionLink的RouterValues屬性來實現跳轉,如下:
<div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("主頁", "Index", "Home")</li> <li>@Html.ActionLink("網頁授權用例", "Index", "LoginAuth", new { Area = "" }, null)</li> <li>@Html.ActionLink("消息群發用例", "Index", "MsgSend", new { Area = "" }, null)</li> <li>@Html.ActionLink("微信支付用例", "Index", "Products", new { Area = "WxPay" }, null)</li> <li>@Html.ActionLink("退款申請用例", "Index", "Refund", new { Area = "WxPay" }, null)</li> <li>@Html.ActionLink("微信掃一掃用例", "Index", "ScanQRCode", new { Area = "" }, null)</li> </ul> </div>
為什么“網頁授權用例”也需要設置Area屬性呢?而且值還為空。
這是因為我們在點擊完帶Area屬性的功能,再去點擊不帶Area屬性的功能時會沿用上一個頁面的Area屬性,所以我們要有個清空操作。