我剛剛開始使用 Asp.Net Core 2.2 研究新 Web 應(yīng)用程序的注冊/登錄/注銷功能。我已經(jīng)搭建了身份頁面,對我來說更容易。我不喜歡這種新方法。我的頁面代碼像這樣生成注冊頁面的鏈接<div class="text-right reg-button">
<a asp-area="Identity" asp-page="/Account/Register" class="submit">Register</a></div>這會(huì)生成鏈接<div class="text-right reg-button">
<a class="submit" href="/Identity/Account/Register">Register</a></div>單擊該鏈接會(huì)產(chǎn)生錯(cuò)誤NullReferenceException:對象引用未設(shè)置為對象的實(shí)例。該鏈接看起來正確,所以我懷疑它嘗試使用的布局有問題,因?yàn)檫@也是錯(cuò)誤詳細(xì)信息的一部分。NullReferenceException:對象引用未設(shè)置為對象的實(shí)例。AspNetCore.Views_Shared__Layout_Industry.b__14_0() in _Layout-Industry.cshtml + var controllerName = this.ViewContext.RouteData.Values["controller"].ToString();所以我直接在Register頁面中將布局設(shè)置為null,頁面以基本形式呈現(xiàn)。所以問題變成了兩個(gè)方面;為什么我在 Identity 部分 ViewStart 文件中設(shè)置的布局(我也在 Views/Shared 文件夾中設(shè)置的布局)在所有 Identity 頁面中都失敗,但在 Areas 文件夾下以外的任何其他頁面中都可以正常工作?即使我直接在文件中設(shè)置布局完整路徑,它仍然會(huì)失敗并出現(xiàn)同樣的錯(cuò)誤。布局文件名為 _Layout-Industry,但我在錯(cuò)誤詳細(xì)信息中注意到它顯示為 _Layout_Industry,該連字符是否會(huì)導(dǎo)致問題?
1 回答
肥皂起泡泡
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
它正在使用您的布局。問題是您的布局實(shí)際上會(huì)引發(fā)異?!,F(xiàn)在,它在 Razor Page 與傳統(tǒng) MVC 視圖使用時(shí)引發(fā)異常的原因是 Razor Pages 沒有控制器,因此ViewContext.RouteData.Values["controller"]為 null。試圖ToString()取消這會(huì)導(dǎo)致您的NullReferenceException.
使用 Razor 頁面,“動(dòng)作”和“控制器”都不會(huì)出現(xiàn)在您的 RouteData 中,因?yàn)檫@些概念都不適用。相反,您將擁有“頁面”和“處理程序”。如果您想對 Razor Pages 和 MVC 視圖使用相同的布局,那么您需要調(diào)整您對控制器名稱所做的邏輯以適應(yīng) Razor Pages。
- 1 回答
- 0 關(guān)注
- 168 瀏覽
添加回答
舉報(bào)
0/150
提交
取消
