ASP.NET MVC:我真的必须为每个动作创建一个视图吗?

时间:2010-06-01 23:32:54

标签: c# .net asp.net-mvc

如果我的应用程序中有一个相当粗糙的区域,我是否真的需要创建单独的“创建”和“编辑”视图? HTML几乎是一样的。我想要一个“编辑”和“创建”动作来渲染“Show.aspx”视图,但Resharper 5肯定抱怨没有“显示”动作。

最佳做法是什么?

4 个答案:

答案 0 :(得分:1)

还有其他选择。基本上,我有三个选择。

  1. 您可以创建用户控件并进行非常轻量级的编辑和创建页面。
  2. 如果您使用的是ASP.MVC 2,则可以在视图模型上捕获布局作为属性,并使用新模板助手DisplayFor,并在编辑/创建案例中使用EditorFor / EditorForModel。
  3. 您可以在从控制器操作调用View时指定视图名称。

答案 1 :(得分:1)

你没有“做”任何事情。 MVC基于惯例,这些约定很有价值,但这些在技术上并不需要。在您的情况下,我认为避免冗余代码更重要。

您可能会考虑只使用“更新”操作和Update.aspx视图(表单)。

使用相同的表单进行创建和更新。唯一的区别是,在创建时,表单将没有对象ID。

提交后,如果Update操作看到ID,则会加载该对象。如果没有,它会实例化一个新的。然后只需从表单更新属性,然后提交(保存)。

所以,一个动作和一个视图。更少的代码,它保持常规。

答案 2 :(得分:0)

您可以指定希望控制器方法使用的视图,因此没有严格要求拥有两个不同的视图。

如果您的“添加”和“编辑”视图看起来完全相同,但您希望向用户说明它们是否正在添加或编辑,则只需将其他标题推送到ViewData,然后将其显示在共享视图中即可。

您还可以将视图放在“共享”文件夹中,或创建可以共享的.ASCX部分。

答案 3 :(得分:0)

去吧。这很有道理。应始终为前端开发人员设置视图,因为控制器可以将数据传递到任何视图,而无需任何额外的工作。你不应该因为ReSharper这么说而感到受限制。