關於我的項目我使用的是ASP.NET MVC3,我的背景來自傳統的asp.net,我的問題是與「與asp.net webforms比較」與可能的繼承有關在代碼隱藏。ASP.NET MVC3查看類繼承
我打算(在mvc3中)是在應用程序的所有視圖上都有一些額外的屬性。
是否可以將我的額外屬性添加到我的視圖或我需要使用「助手方式」作爲解決方法?
請注意,我的問題不在模型級別,而是針對視圖(UI)。
對不起忘了提,我的視圖引擎是剃刀
關於我的項目我使用的是ASP.NET MVC3,我的背景來自傳統的asp.net,我的問題是與「與asp.net webforms比較」與可能的繼承有關在代碼隱藏。ASP.NET MVC3查看類繼承
我打算(在mvc3中)是在應用程序的所有視圖上都有一些額外的屬性。
是否可以將我的額外屬性添加到我的視圖或我需要使用「助手方式」作爲解決方法?
請注意,我的問題不在模型級別,而是針對視圖(UI)。
對不起忘了提,我的視圖引擎是剃刀
如果您額外的屬性意味着是特定的用戶界面,那麼你可以定義一個母版頁和使用,在所有視圖頁面。如果它們的目的是作爲值屬性,那麼你可以創建一個基本模型並在你的模型類中繼承它,然後使用這些模型將其提供給所有的視圖。如果這些都不適合您的目的,那麼您可以嘗試延伸System.Web.Mvc.ViewPage
,但我不確定它是否是最佳做法。
是的,默認情況下MVC Views繼承System.Mvc.ViewPage
。如果您使用強類型視圖,那麼它是System.Mvc.ViewPage<model>
,其中@model
聲明傳遞給通用ViewPage<>
類。
雖然它是可能從繼承派生的ViewPage,它通常不會完成。根據你想要做什麼,可能有更好的解決方案。
也許如果你澄清你在做什麼,它可能會幫助我們更好地幫助你。
在此先感謝,忘記提及我使用剃鬚刀。並想象我總是有一些價值在我的會議(例如),我假裝是得到一種方式來獲取一個屬性來做類似這樣的事情:somestring @MySessionProp somestring – 2012-02-24 19:18:42
從視圖訪問會話值不是一個好主意。這打破了查看和控制器的分離。會話從控制器訪問。如果您在視圖中需要它,請將其傳遞給視圖,不要讓所有會話值在您的視圖中可用。例如,將該值作爲ViewBag或ViewData對象傳遞,或者將其添加到您的模型中。這是一個壞主意的原因是它使視圖無法測試。我知道你可能沒有進行單元測試,但是你爲單元測試做的同樣的事情會讓你的代碼更易於維護。 – 2012-02-24 22:05:43
我不清楚你的要求。你問是否有可能繼承'Controller'將一些屬性添加到新的基類,然後從新的基類派生你的控制器?如果是這樣,那麼是非常有可能的。 – asawyer 2012-02-24 18:56:57
取決於你所說的「額外屬性」。 – muratgu 2012-02-24 19:10:17