了解 MVC 中的模型类与数据类

2024-03-03

多年来我一直使用 Webforms 开发 ASP.Net 应用程序,并且完成了一些 MVC 应用程序,但从未真正完整地使用过该框架,这是由于大多数项目的时间限制。虽然,我使用的是 MVC 结构,但我仍然使用旧的方法,即不使用 @Html.BeginForm 等,而是使用标签等。

我最近刚刚开始另一个项目,但这次我想使用正确的 MVC 功能。

我一直在阅读有关设计模式的最佳实践。在我的解决方案中,我有用于 MVC 应用程序、测试和数据的项目(这是一个连接到数据库的类库)。我没有使用实体框架,但我仍然想知道为视图模型创建类的正确方法。

在我的数据库课程上,我有一个名为“用户”的课程

public class User
{
    public long Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public string Email { get; set; }

    [Required]
    public long RoleId { get; set; }
}

我想要在视图上呈现的字段是名称、电子邮件和 RoleId 的下拉列表。那么对于视图上的模型,它不必与我的数据类相同是否正确?下面是正确的模型视图类吗?

public class UserModel
{
    public Data.User User { get; set; }

    public IEnumerable<KeyValuePair<long,string>> RoleList { get; set; }
}

提出这个问题的原因是,最初,我总是假设模型类应该与你的数据类相同,我在谷歌中读到的数据类在大多数情况下并非如此。它是否正确?

这是视图的正确实现吗?

@using (Html.BeginForm())
{
   @Html.LabelFor(m=>m.User.Name)
   @Html.TextAreaFor(m=>m.User.Name)
   <br/>
   @Html.LabelFor(m => m.User.Email)
   @Html.TextAreaFor(m => m.User.Email)
   <br />
   @Html.LabelFor(m => m.User.RoleId)
   @Html.DropDownListFor(m => m.User.RoleId, new SelectList(Model.RoleList, 
    "Value", "Key"),"--Please Select--")
}

模型类代表应用程序的业务方面,因为在您的情况下,您有一个用户模型具有用户信息的类及其角色的集合,其中数据模型特定于存储库,即您的情况下的数据库表,因此数据模型通常表示我们拥有的数据库的表。希望这是有道理的。

您还可以参考以下帖子,其中询问了类似的问题,我认为:

https://stackoverflow.com/a/2446051/1875256 https://stackoverflow.com/a/2446051/1875256

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 MVC 中的模型类与数据类 的相关文章

随机推荐

  • 如何在flutter中过滤列表?

    我正在尝试向我的过滤器添加过滤器list 这就是我所做的 productTemp sort a b gt b productPrice compareTo a productPrice productTemp productTemp whe
  • 如何修复运行 redis:alpine Docker 镜像时出现的警告

    如果我运行Redis 高山 https hub docker com redis 使用命令的 Docker 镜像 docker run redis alpine 我看到几个警告 1 C 08 May 08 29 32 308 Warning
  • 修改android项目名称

    我有没有可能改变name of my project正如它出现在Package Explorer 我正在使用 Eclipse IDE 我尝试编辑string xml in res value文件夹 但这不会在资源管理器视图中更改它 右键单击
  • vue:未捕获类型错误:无法读取未定义的属性...

    我在用着 电子邮件受保护 cdn cgi l email protection和vue 官方 webpack 模板 https github com vuejs templates webpack构建一个应用程序 本地开发时经常看到这样的警
  • 在 Django 应用程序中实现 Facebook 登录的简单且最新的方法

    这个问题在stackoverflow中很常见 并且有很多不同的问题和答案 但我找不到我需要的 首先 我想准确定义我需要的内容 允许用户使用其 Facebook 凭据登录我的应用程序的选项 该应用程序将保存匹配的经典 Django 用户 我只
  • 通过删除旧行自动强制执行最大数据库表大小

    我有一个 Oracle 表 其中包含应用程序的事件日志消息 我们不希望该表增长失控并占用太多空间 因此我们希望将其可以包含的行数设置为某个大数字 例如一百万 所以我们想告诉Oracle 当表变得太大时 它应该删除最旧的行 为新行腾出空间 有
  • 读取文件中的值,循环直到 value = $foo?

    我正在编写一个用于 grep 的 shell 脚本 foo然后计算出现的次数 然后运行命令 每次运行该命令时 该文件中都会减少一个 foo 实例 不确定如何连续读取该文件并减少我设置的变量中的值 count grep o foo some
  • 是否有在线模拟屏幕阅读器工具来测试自定义网页? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们关心我们网站的可访问性 并想看看普通屏幕阅读器如何感知和解码它 不 至少没有任何好处 也不代表屏幕阅
  • Google 地图可以设置为缓慢持续平移吗?就像一场全球革命?

    正如标题所说 我正在寻找解决方案 但没有找到任何可以引导我找到正确文档或文章的内容 如果您有任何想法或可以向我指出一个可以使用的可能解决方案 我将不胜感激 Thanks 你可以自己这样做 Use setInterval https deve
  • OpenGL 实现多通道

    我在移植一些已成功实现的代码时遇到问题着色玩具 https www shadertoy com view XdyfWK对于桌面 OpenGL 问题是我需要创建一个 FrameBufferObject FBO 以便我可以进行离屏计算 稍后将其
  • VB.NET ArrayList 到 List(Of T) 类型复制/转换

    我有一个返回旧式 ArrayList 的第 3 方方法 我想将其转换为类型化 ArrayList Of MyType Dim udc As ArrayList ThirdPartyClass GetValues Dim udcT AS Li
  • 如何获取特定日期的唯一客户和重复客户每天的客户数量?

    我试图从我的订单表中获取结果 以获取第一次订购和重复订单的客户数量列表 像下面这样的东西 Date 1st time time repeat order 2014 09 01 43 90 2014 09 02 3 45 2014 09 03
  • 由于 ISAPI 报告不健康状况,ASP Net Core 应用程序被回收

    我收到系统事件日志条目 An ISAPI reported an unhealthy condition to its worker process Therefore the worker process with process id
  • .NET 生产代码中的“Assert”语句

    离开是否明智Trace Assert and Debug Assert代码中的语句是否 稳定 并且已移至测试和生产环境中 如果是这样 这些断言语句有何帮助 让 Guard 类等检查异常情况并适当引发异常还不够吗 调试断言 http msdn
  • MYSQL:带有 if 语句的过程

    我正在尝试制定一个例程 首先检查用户密码 如果正确 它将从不同的表返回一些值或连续更改一些值 如果不进行在 PHP 中处理的两个查询 这是否可能 首先要求输入密码 检查密码是否正确 然后允许用户更改名称 下面是使用电子邮件和密码获取用户中的
  • SCRIPT5:由于 Wordpress 中的 jQuery.min CDN 文件,IE9 上的访问被拒绝

    我读过很多关于 SCRIPT5 IE9 中的访问被拒绝问题的其他文章 但据我所知 这篇文章有点不同 我不太确定为什么会发生这种情况 使用标准 2011 主题安装 Wordpress 3 4 1 时会出现这种情况 我使用以下函数将脚本排入队列
  • Bash 脚本中的反引号和 $() 有什么区别? [复制]

    这个问题在这里已经有答案了 我在 Bash 脚本中看到两种不同的形式 它们的作用似乎相同 some command and some command 两者有什么区别 什么时候应该使用它们 没有任何语义差异 反引号语法是较旧且功能较弱的版本
  • 如何正确使用 Alexa Skill 中的异步函数?

    我对异步编程非常陌生 所以请原谅我缺乏理解 但我目前正在构建一个调用私人停车 API 的 Alexa 技能 您可以调用该API 它会为您提供最近的停车位 const getParkingSpots Handler canHandle han
  • 如何设置夜间模式绘图以按预期工作

    我如何随着夜间模式的变化而改变背景 我有 values 和 values night 文件夹 其中包含具有不同值的 colors xml
  • 了解 MVC 中的模型类与数据类

    多年来我一直使用 Webforms 开发 ASP Net 应用程序 并且完成了一些 MVC 应用程序 但从未真正完整地使用过该框架 这是由于大多数项目的时间限制 虽然 我使用的是 MVC 结构 但我仍然使用旧的方法 即不使用 Html Be