2009-02-19 59 views
0

林遇到了一些瘋狂,我只是想不通..如何添加一個代碼隱藏到asp.net mvc視圖?

香港專業教育學院創建了以下類:

public abstract class AbstractView<T> : ViewPage<T> where T : class 

這給了我一些有用的工具和即時通訊在我的看法是這樣使用它:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Project.Web.Mvc.AbstractView<Project.Domain.Entities.Example>" %> 

這一切工作正常。現在我必須製作一個需要大量複雜的渲染代碼的視圖,所以我想給我的視圖一個代碼隱藏,所以我可以把所有這些表現邏輯放在它裏面。

然而,當我這樣做:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Project.Web.Views.Examples.View" CodeBehind="~/Views/Examples/View.aspx.cs" %> 

public class View : Project.Web.Mvc.AbstractView<Project.Domain.Entities.Example> 

型號總是空當調試視圖,隨後給了我:

"The view 'View' or its master could not be found. The following locations were searched..." 

回事請告訴我?

Andrew

P.S.不要告訴我codebehinds是邪惡的。我編寫演示文稿的具體邏輯,和很多。它不在aspx中內聯。

+0

其優良的爲你指出,你明白代碼屁股被認爲是發展觀,但你沒有必要有你的理由,它沒有很好威脅與downvotes的答案 – AnthonyWJones 2009-02-19 12:40:22

回答

2

你可以嘗試使用代碼旁邊。我的意思是一個從AbstractView<T>派生出來的類只被這個視圖使用。它實際上與代碼隱藏的概念相同。然後指出,而不是使用AbstractView<T>。另外,你的模型不會被掛鉤,直到OnLoad(可能更早,我從來沒有做過它自己),所以如果你想在構造函數中使用它,可能會成爲你的問題。

否則,您可能需要查看使用ViewModel,以便代替您傳遞我假設的原始域對象,您可以在ViewModel中執行自定義格式並將其傳遞至AbstractView<T>

0

使用View作爲你的類名可能不是一個好主意。使用更具體的東西。

我認爲你在Inherits屬性中指定的名稱空間中聲明該類?

0

好吧,我的壞,模型沒有準備好在代碼隱藏,直到onload,我在做構造函數中的東西。

奇怪的是,MVC會說「無法找到的看法」時,它顯然可以,只是有拋出的異常

相關問題