问题标签 [asp.net-mvc-viewmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
84038 浏览

asp.net-mvc - ViewModel 最佳实践

这个问题来看,让控制器创建一个更准确地反映视图试图显示的模型的ViewModel似乎是有意义的,但我对一些约定很好奇(我是 MVC 模式的新手,如果它还不是很明显)。

基本上,我有以下问题:

  1. 我通常喜欢有一个类/文件。如果创建ViewModel只是为了将数据从控制器传递到视图,这对它有意义吗?
  2. 如果ViewModel确实属于它自己的文件,并且您使用目录/项目结构来保持独立,那么ViewModel文件属于哪里?在控制器目录中?

目前基本上就是这样。我可能还有一些问题要问,但这在过去一个小时左右一直困扰着我,我似乎可以在其他地方找到一致的指导。

编辑: 查看 CodePlex 上的示例NerdDinner 应用程序,看起来 ViewModels 是Controllers的一部分,但它们不在自己的文件中仍然让我感到不舒服。

0 投票
6 回答
21697 浏览

asp.net-mvc - 服务层是否应该返回 MVC 应用程序的视图模型?

假设您有一个 ASP.NET MVC 项目并且正在使用服务层,例如在 asp.net 站点上的此联系人管理器教程中: http ://www.asp.net/mvc/tutorials/iteration-4-make-应用程序松耦合cs

如果您的视图有视图模型,那么服务层是否适合提供每个视图模型?例如,在服务层代码示例中有一个方法

相反,如果您想要一个 IEnumerable,它应该放在服务层中,还是有其他地方是“正确”的地方?

也许更合适的是,如果您为与 ContactController 关联的每个视图都有一个单独的视图模型,那么 ContactManagerService 是否应该有一个单独的方法来返回每个视图模型?如果服务层不合适,应该在哪里初始化视图模型对象以供控制器使用?

0 投票
1 回答
155 浏览

javascript - 使用 jQuery 和 ASP.NET MVC 将集合插入模型,创建插件

在查看了可用选项之后,我正在考虑为 jQuery 制作一个插件(巧合的是,一个 ASP.NET MVC 库),它将提供一些简单的方法来动态地将对象添加到 ViewModel 的集合中。

我谈到这样的事情(http://www.highoncoding.com/Articles/640_Adding_Multiple_Nested_Data_in_ASP_NET_MVC_Application.aspx

不过,在我开始构建自己的之前,我想知道是否已经有类似的东西了。

0 投票
1 回答
1265 浏览

asp.net-mvc - ASP.Net MVC 3 中具有多个存储库的控制器

我有一个控制器,它控制一个作为标准搜索页面的视图。该视图在顶部有一个搜索条件部分,在底部有一个网格部分,它将显示搜索结果。我的控制器中有两个存储库,一个用于常见的东西,例如与 Criteria 部分关联的组合框值。另一个存储库用于网格数据。我创建了一个包含两个存储库的视图模型并将其传递给我的视图(作为我的模型),这使我的模型非常庞大。有没有更好的方法来做到这一点?

0 投票
3 回答
90863 浏览

asp.net - 模型项的类型为 CookMeIndexViewModel,但需要 IEnumerable 类型的模型项

我正在跟随音乐商店示例来尝试学习 ASP.NET MVC。我正在创建一个食谱应用程序。

我创建了如下所示的视图模型:

我的控制器看起来像这样

最后我的观点看起来像这样

我得到这个错误。

传入字典的模型项是 type CookMeIndexViewModel,但是这个字典需要一个 type 的模型项IEnumerable<CookMeIndexViewModel>

我遵循了这个例子。我看不出我做错了什么。我应该将我的视图模型作为通用列表返回吗?

0 投票
2 回答
5479 浏览

c# - MVC ASP.NET 中的 ViewData 和 ViewModel

我是 .Net 开发的新手,现在正在关注 NerdDinner 教程。只是想知道你们中是否有人能告诉我

ViewData 和 ViewModel 有什么区别

(我所知道的是它们用于将某种形式的数据从控制器传递到视图),也许会告诉我在什么情况下应该使用 ViewData 而不是 ViewModel,反之亦然

提前致谢!

莎莉

0 投票
1 回答
840 浏览

asp.net-mvc - 具有复杂类型 MVC 3 的自定义模型绑定器

我有以下 ViewModel,我想创建一个自定义绑定器来绑定子类(LogOnModel、ChangePasswordModel)。

我能够创建我的自定义绑定器(从 DefaultModelBinder 继承),但永远无法将完整的 VALIDATED 模型(填充了 ModelState)返回到我的控制器中。它适用于简单类型(字符串、布尔值、....),但对于复杂类型(子类)有点复杂。

MVC 3 Futures 是我的问题的答案,还是有人能够覆盖 DefaultModelbinder 来绑定子类?

谢谢,米歇尔

0 投票
7 回答
24820 浏览

c# - MVC - 将多个数据表传递给视图

我目前在我的 MVC 项目的 HomeController 中有以下代码:

所以这行得通,但现在我想将第二个表传递给同一个视图。所以我在想我应该能够做这样的事情:

有没有办法让视图接受这样的两个模型,或者,有一种方法可以合并两个结果集(这两个表没有以任何方式链接?

0 投票
1 回答
635 浏览

asp.net-mvc - 对 ASP .NET MVC 如何根据视图模型和发布的表单值填充字段感到困惑

不确定这个问题是否已经被问过。

我正在开发一个 ASP .NET MVC 2 站点。我的视图有一个下拉菜单,用户可以在其中选择要显示的记录以进行编辑。更改此下拉列表时,当前选定记录的字段值会自动发布到服务器并保存在会话中。在响应中,服务器然后返回一个用于编辑新选择的记录的视图。

我遇到的问题是在显示新记录时会记住上一条记录中的某些字段值。

在我看来,我有类似以下问题的原因:

在这里,我希望发布的数据填充一个名为ActionTypeDetails的参数,该参数具有多个属性,包括DisplayName

我的控制器操作如下所示:

我尝试将我的观点改为:

我的控制器对此采取的行动:

然而它仍然表现出同样的问题。有人可以解释一下为什么它会这样工作的逻辑吗?仍然允许我使用内置模型绑定的最简单的解决方法是什么?我知道我可以清除 ModelState 但这并不理想,因为我希望记住表单上的一些其他数据。

0 投票
2 回答
2443 浏览

asp.net-mvc - 使用 EntityFramework 和映射的 ViewModel 的 ASP.NET MVC 最佳实践

我以前从未使用过 MVC 设计模式,最近我开始使用 ASP.NET MVC 处理项目。

我使用 ActiveRecord 作为我的数据层。

我还使用视图模型(每个视图唯一)和 AutoMapper 将我的视图模型映射到 EntityFramework 实体。

在研究 MVC、EntityFramework 和阅读不同文章的几天后,我提出了以下设计:

在我的解决方案中,我有包含视图和控制器的 Web 项目(表示层)。

我有核心项目,我在其中定义了我的 ViewModels 和服务(所有业务逻辑所在的业务层)

我有 EntityModels 项目,我所有的 EF 实体都在其中(数据层)

这种设计允许我将我的数据层与我的表示层分开,Web 项目对 EntityModels 项目一无所知,反之亦然,所有逻辑都存在于业务层中。

从我的控制器(在验证检查之后)我将 viewModels 传递到服务层,在该层执行映射和所有必要的业务逻辑。

这种设计完全正确吗?

我的担心是我已经读过 ViewModels 应该在表示层中定义。我看到了表示层引用数据层并且映射是在控制器中完成的示例(好的做法?)。在这种情况下,控制器将域模型传递给业务层。我在这里没有任何经验,但我不喜欢它。

那么,谁能指出我哪里对,哪里错?

提前致谢。