共享或部分视图的项目结构/体系结构

时间:2017-06-30 18:15:06

标签: asp.net-mvc razor asp.net-mvc-5

我是一位经验丰富的asp.net web表单开发人员,但我是MVC的新手,正在寻找有关如何设置我的MVC项目的一些指导。在我的MVC 5项目中,我想创建以下内容:

  1. 基本数据输入页面,允许用户编辑其个人资料详细信息。用户可以在网站上随时使用此页面。
  2. 向导页面(或一组页面),其中包含用户输入其个人资料详细信息的步骤。首次登录时,所有用户都需要通过向导。
  3. 我想将配置文件编辑器构建为部分视图(或类似asp.net用户控件),只需在向导页面和独立配置文件编辑器页面上重复使用它。阅读本文(https://www.simple-talk.com/dotnet/asp-net/tips-and-tricks-about-razor-partial-views/)后,部分视图似乎可能有助于重用代码。

    我的问题:我应该如何构建我的控制器/代码,实际上将用户在部分视图中输入的数据并将其提交到数据库中。每个单独的页面是否需要自己的控制器和重复的代码,以便将数据保存到数据库?部分视图可以拥有自己的控制器或代码吗?任何文章或教程的链接将不胜感激。

    我的向导中还有其他几个步骤,它们将重用其他页面中的代码/控件,因此我希望找到这种代码重用的良好模式。

    谢谢, 马克

2 个答案:

答案 0 :(得分:0)

  

每个单独的页面是否需要自己的控制器和重复的代码,以便将数据保存到db?

他们需要他们的septate控制器或至少他们的单独操作,但你应该共享用于将数据保存到db的代码,为此检查存储库模式。

  

部分视图可以拥有自己的控制器或代码吗?

是的,但对于这种情况,它不是最好的选择。

  

赞赏任何文章或教程的链接。

最佳资源可能是微软自己的文档: Docs homepagebasic stuff以及特别this来理解ASP.NET MVC中的CRUD。

要共享创建/编辑表单,您可以使用editor templates,如下所示:

ProfileModel.cs

public class ProfileModel
{
    public string Name { get; set; }
}

您应该在EditorTemplate

中创建Views/Shared/EditorTemplates/Profile.cshtml
@model ProfileModel

@Html.LabelFor(model => model.Name)
@Html.TextBoxFor(model => model.Name)

在你的观点中使用它:

@Html.EditorFor(m => m.Profile)

答案 1 :(得分:0)

我会尽量给你一个答案,考虑你的每一个问题。

  

我应该如何构建实际需要的控制器/代码   用户在局部视图中输入的数据并将其提交到   数据库。

您可以根据应用程序的ui特定问题分离您的控制器:例如,在您需要管理用户配置文件编辑表单的情况下,我们可以考虑使用帐户管理关注元素。因此,您可以创建一个更通用的Account控制器类,在其中实现将负责管理模型和视图之间交互的特定用户配置文件操作。

  

每个单独的页面是否需要自己的重复控制器   用于将数据保存到db的代码?

如上所述,它不是必需的......您只需要实现其特定关注控制器的某些操作,并为需要该特定逻辑并尊重操作方法要求的每个视图或部分视图重用该操作。

  

部分视图是否有自己的控制器或代码?

管理其行为就足够了。至于这个问题,你可以实现非常好的模型视图viewmodel模式..特别是这个模式将注意力集中在viewmodel对象上,这些对象只是来自视图和动作来回传递的一些dto,这将是& #34;模型"绑定在视图的ui表格。

相关问题