问题标签 [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.
c# - 服务层 ModelState 未在 .net Web API 中更新
我正在实现一个 MVC 解决方案,该解决方案具有一些用于各种数据查询的 Web API 端点。我正在使用本文中描述的技术将我的验证问题分离到服务层。
如果您想跳到具体问题,这篇文章最后有一个TL;DR 。
这是我的ApiController
代码:
和代码_service.AddFriend(User.Identity.Name, id);
看起来像这样:
_validationDictionary
看起来像这样:
好吧,我发现如果_repository.AddFriend(userName, id);
抛出错误并被_validationDictionary.AddError("AddFriend", e.Message);
调用,则其中的 ModelState 对象_validationDictionary
不会更新驻留在FriendsController
.
也就是说,在AddError
被调用之后, 中的 ModelStateHttpModelStateWrapper
是无效的,但是一旦该方法返回并且范围返回到 中FriendsController
,它的 ModelState 并没有更新,仍然是有效的!
TL;博士
如何获取已传递到HttpModelStateWrapper
ctorFriendsController
中的 ModelState 对象,其更改反映在 的 ModelState 对象中FriendsController
?
asp.net-mvc-3 - ASP.NET MVC 视图模型:在无效帖子上从后端重新加载或将所有属性置于隐藏输入中
我正在使用 ASP.NET MVC3,并且我有一个具有多个属性的视图模型,其中一些用于向用户显示,其中一些用作用户的输入并且可能具有默认值。我对 GET 请求(唯一的参数是获取内容的标识符)和帖子使用相同的视图模型,它们将整个视图模型作为操作中的参数。我的控制器使用通过从 NHibernate 会话中提取实体的业务逻辑层检索到的实体填充视图模型。
是否最好将所有只读字段的隐藏输入放在视图中,这样如果页面在具有无效视图模型的帖子之后呈现,它们就会出现,或者最好只使用用户真正的输入提供数据并重新加载后端的其余部分并将其合并?
谢谢!
编辑:
为什么?
编辑:
控制器通常看起来像这样:
视图看起来像这样:
asp.net-mvc - MVC2 控制器在提交时未从视图接收所有数据
我有一个应用程序调用 Web 服务以根据用户输入的条件显示导入记录。
每个“导入”可以有 0 到多个 PurchaseOrder、0 到多个 Containers、0 到多个 Products、0 到多个 Invoices。
视图(显示查询)工作正常,当我单击提交按钮时,控制器没有通过视图模型获取“导入”信息。我可以通过“formCollection”访问这些控件。
我错过了什么????
这是我的代码...
模型...
这是我的看法(部分)
这是我的控制器...
我还没有发布视图/控制器的完整性......
它可以渲染视图....
当我提交视图/表单时,控制器只能访问视图模型主要部分中的项目(“列表”中没有任何内容)。
我可以通过“formcollection”访问这些其他控件。
我想知道为什么视图模型中有空值。
asp.net-mvc - 如何使用嵌套类编写 viewModel
我的网页/视图将有 1 到多个导入记录。在每个导入记录中将是 0 到以下许多:
- 订单
- 海运集装箱
- 产品
- 发票
我将我的视图模型编码如下:
以上可以吗?类是否正确嵌套?
我可以让视图正确显示来自服务器的数据,但是当我“发布”表单时,嵌套类中的数据为空。
我相信这是因为输入控件没有按需要构建。
我的观点类似于以下:
任何建议将不胜感激....
更新:我已经改变了我的观点以包括“hiddenFor”项目。
“import_rows”在控制器中不再为空,但计数为“0”。我仍然必须错过一些东西......
提前致谢。
asp.net-mvc-4 - MVC 视图模型错误
目标:创建一个可重复使用的下拉菜单,列出我网站的管理员、经理和代理。这些类型的用户由 .NET Simplemembership pages_Roles 和 pages_UsersInRoles 表定义。
到目前为止:我的数据库中有一个 UserProfile 表,它有 25 列。我有一个相应的同名域模型,可以从我的 UsersContext() EF 访问。
下拉菜单只需要列出用户的 FirstName、LastName 和 UserId,因此我没有使用完整的域模型,而是创建了以下 ViewModel:
然后我将以下内容添加到我的帐户控制器中(注意我还没有使用部分视图):
然后,我搭建一个列表视图并将其基于强类型 ViewModel:
我做了一个成功的构建,当我运行网页时,我收到以下错误:
传入字典的模型项的类型为“System.Data.Entity.Infrastructure.DbQuery
1[My.Models.UserProfile]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1[My.Models.ViewModels.AdminsAndAgentsListVM]”。
如果我重新创建视图但在 UserProfile 中强烈键入它,它工作正常。那么如何重新工作,以便我可以对我的 ViewModel 进行强类型输入呢?如果可能,请提供示例。我是 C# 和 MVC 的新手,亲眼目睹代码确实让我受益匪浅。非常感谢帮助!
编辑 ------------------ 这是 UserProfile 的对象:
asp.net-mvc - 如何在条件下使用 ReadOnly 数据注释?
我想在我的 ViewModel 属性上应用 ReadOnly 数据注释。但这需要根据某些条件进行检查并应用。
例如,如果我将一些字段映射保存到我的数据库表中,然后我想检查 ViewModel 属性,这是否需要只读或可编辑。
如果您能在这里分享您的想法,我将不胜感激。
asp.net-mvc - 在 Linq to EF 中调用方法
为了创建 ViewModel,我尝试调用 GetName() 方法来查找 UserID 的 FirstName 和 LastName,然后将其添加到模型中。但错误告诉“Linq to Entities 无法识别该方法”。
我如何以另一种方式实现这一目标?
我的代码:
c# - MVC 3 视图模型属性
我对 viewModel 中的属性组织有疑问。据我了解,视图模型应该尽可能简单,它应该做的主要事情是将数据绑定到视图。
问题是如何区分视图模型和 BL 模型中的属性。我的意思是,例如,我有一个 BL 模型,例如:
然后我有另一个 BL 模型说:
现在的问题是创建应该具有两个 BL 模型数据的 ViewModel 的最佳实践是什么。
1)复制2个模型的属性,并使用默认模型绑定将数据从视图传输到控制器,然后从ViewModels创建BL模型并通过存储库更新数据?在这种情况下,我们有代码重复......
2) ViewModel 应该类似于:
默认绑定在这种情况下不起作用(如果我弄错了,请纠正我),我应该编写自定义模型绑定器或类似的东西......哪种方法更适合单元测试,或者可能有另一种方法?
asp.net-mvc - MVC 视图渲染不尊重视图模型中传递的数据
我正在尝试创建一个 MVC 操作方法,该方法允许用户逐步查看一系列数据库记录。每次用户发布更新时,都会将其提交到数据库并检索和呈现新记录以供审查。
但是,我的 MVC 视图似乎正在组合来自发布的视图模型和作为数据库查询结果创建的新视图模型的数据。当视图简单地呈现来自视图模型的属性值时,它会正确地使用来自视图模型实例的那些传递给它的值,但是当它将 HTML 表单控件绑定到视图模型属性时,它会使用来自发布的视图模型的值。这意味着单个视图能够为单个视图模型实例上的单个属性显示两个不同的值:
这是动作方法的一个非常简化的版本......
...和视图模型...
...以及用于创建上述图像的视图...
似乎我误解了 MVC 视图发现其模型数据的方式。我应该使用一些替代语法来明确告诉视图将其表单控件绑定到传递给它的视图模型吗?
谢谢,
蒂姆。
asp.net-mvc-4 - MVC 模型实例化
我没有掌握 MVC 模型的一些概念基础知识,我希望得到一些有用的澄清。
在我的 MVC 4 Web 应用程序中,我有一个为 DropDownList 构建 IEnumerable<SelectListItem> 的视图模型,如果我在视图中执行此操作:
我收到“对象引用未设置为对象的实例”错误。
但如果我这样做:
有用。但是这种显式实例化对我来说看起来和感觉都非常错误,我不确定我是否应该在控制器中做任何事情,此时这只是一个简单的“返回 View()”ActionResult。
我找不到太多好的指导,最终我正在尝试实现一些级联下拉菜单,所以我需要更好地了解它是如何工作的。如果您有时间和意愿提供帮助,我将不胜感激。