2010-06-11 63 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