2010-06-11 62 views
0

在我的MVC應用程序的CRUD方面我有很多看似毫無意義的視圖文件,如:ASP.NET MVC:冗餘的CRUD區(強類型)的意見

<%@ Page Title="" Language="C#" MasterPageFile="Some.Master" Inherits="System.Web.Mvc.ViewPage<SomeModel>" %> 

<asp:Content ID="ContentID" ContentPlaceHolderID="SomePlaceHolder" runat="server"> 
    <%= Html.DisplayForModel() %> 
</asp:Content> 

這當然是非常unDRY的。

是否可以在保留強類型的同時使用共享視圖?(例如,通過指定控制器中的通用類型?)

回答

1

您可以在/ Views/Shared /中擁有一個Display.aspx,而不是爲每個CRUD控制器顯示視圖。視圖引擎搜索/視圖/ {yourcontroller}然後/視圖/共享/無論它尋找什麼。

如果您的所有視圖都是<%= Html.DisplayForModel()%>,則不需要強類型。 DisplayForModel()知道如何解決這個問題。

有關該技術的更多信息: http://haacked.com/archive/2009/08/04/default-templated-views.aspx

+0

感謝您的鏈接 - 沒有閱讀過這篇文章。 – UpTheCreek 2010-06-11 19:58:57

1

如果它很常見,您可以將此代碼放在主文件(Html.DisplayForModel())中,以便您不必在每個視圖中重寫它。只有不需要這種常見行爲的視圖才能覆蓋它。

+0

但後來我還是留下了強類型的視圖存根我想。如何擺脫這些? – UpTheCreek 2010-06-11 10:08:41

+0

你可以創建一個共享視圖,你的控制器動作將返回View(「〜/ Views/Shared/SomeSharedView.aspx」,someModel);' – 2010-06-11 10:18:12

+0

但是我想你會失去強大的輸入呢?也許沒關係......? – UpTheCreek 2010-06-11 10:43:25