问题标签 [updatemodel]

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 投票
0 回答
1089 浏览

asp.net-mvc - FormCollection 中数组的 UpdateModel

如果我的FormCollection中有 [0].propertyname、[1].propertyname 等,我将如何更新模型?

如果我这样做:

它不更新。

或单独尝试更新:

仍然没有喜悦。

在原始实体上尝试 ICollection(即顺序 [0]、[1] 等)

我认为也不起作用。谁能发现我的错误?我应该写一个新的 ValueProvider 吗?

0 投票
2 回答
70 浏览

linq-to-sql - 编辑发布操作 - 为什么 respository.save() 保存数据?

我有点糊涂了。我无法解释为什么以下工作:

该示例取自 Scott Guthrie 的 NerdDinner 演练,其中dinnerRepository.Save() 定义为:

而dinnerRepository.GetDinner(id) 定义如下:

即,db NerdDinnerDataContext 如何“知道”保存晚餐对象?

我对Linq To SQL的理解一定有一个洞,但如果我能指出它,那就吹了。好的,所以晚餐对象有一个 id,但是什么告诉 db 有更改要为具有该 ID 的特定记录提交?

我只是看不到它。应该是世界杯...

我只能认为 DataContext 对象 db 保留了对使用 GetDinner 方法调用获得的晚餐对象的引用。但是......这一切都感觉有点“神奇”

安德鲁

0 投票
0 回答
312 浏览

visual-studio-2008 - 更新向导(实体框架) - VSS 2008 不更新视图。我应该手动更新它吗?

我正在使用 VSS 2008 并从 SQL Server 2008 数据库构建了一个实体框架模型。一切正常。现在我更新了一个视图以包含一个新列,并尝试从 DB 刷新整个模型,但视图中的更新列不可见。

我将 EDMX 作为 XML 打开以查看问题,它有一个警告... 生成期间发现错误:警告 6002:表/视图“Internet.dbo.XYZ”没有定义主键。已推断出密钥,并将定义创建为只读表/视图。

我的问题是,我如何从这个视图中强制将新列添加到我的模型中。我可以手动更新 EDMX 以将此列作为属性包含到视图实体中吗?但是,这可能是一项乏味的任务,并且可能无法保证可以修复。我是否应该删除此视图然后重新添加它,但我读到某人的帖子,当他试图重新添加对象时,它不允许他?

谢谢。

0 投票
2 回答
897 浏览

.net - UpdateModel 方法如何将 FormCollection 值填充到我们的实例中?

在此示例中,UpdateModel 方法如何使用 formValues 填充人员实例?我认为 UpdateModel 在通过 formValues 填充人员时使用反射,但是 updatemodel 如何捕获 formValues 参数?

0 投票
1 回答
304 浏览

nhibernate - 如何使用 asp mvc 和 nhibernate 有效地更新带有引用(下拉列表)的模型

我开始用 nhibernate 和 asp mvc2 开发一个 web 应用程序(应用程序组合)。

我很难正确更改应用程序的类别。
这是我的模型:

我的视图模型:

我的表格:

我的控制器动作:

我可以分配一个新类别,但如果我更改为不同的类别,我会收到以下消息:

Core.Model.Category 实例的标识符从 2 更改为 3

这似乎是因为 defaultmodelbinder 正在更新分配类别的键,而不是使用新的新键分配新类别。

用所有引用更新实体的正确方法是什么?
我也许可以使用自定义视图模型,将其绑定到控制器中,然后将其映射到我的域模型。但我担心它会给我太多的工作(最后我的应用程序模型中将有大约 100 个属性、30 个引用和 5-6 个列表)。
Automapper 在这种情况下对更新现有的域模型有用吗?
你如何处理这种更新?

0 投票
2 回答
2942 浏览

c# - TryUpdateModel 不使用 Prefix 和 IncludeProperties

嗨,我有一个名为 User 的实体,它有两个名为 UserName 和 Role 的属性(这是对另一个名为 Role 的实体的引用)。我正在尝试从发回的表单中更新 UserName 和 RoleID。在我的回发操作中,我有以下代码:

但是,这些都不会更新 Role.RoleID 属性。如果我尝试以下操作:

RoleID 已更新,但 RoleName 属性也已验证。这就是为什么我试图更具体地更新哪些属性,但我无法让任何第一个示例工作。

如果有人可以提供帮助,我将不胜感激。谢谢

0 投票
1 回答
1562 浏览

asp.net-mvc - 当 ModelState 在 HttpPost 上无效时,ASP.NET MVC 自动绑定刷新的模型

我正在开发一个 ASP.NET MVC2 应用程序。我开始意识到 MVC 在幕后所做的与 ModelState 和模型绑定有关的一件非常令人惊讶但又令人惊奇的事情。我有一个 ViewModel,它有一大堆数据——一些字段是表单的一部分,而其他字段只是 UI 的一部分。在 HttpPost 上,我的 Action 方法使用 DefaultModelBinder 尝试绑定整个模型,但只有作为表单一部分的字段才能成功反序列化 - 所有其他字段都保持为空。这很好,可以理解。如果 ModelState 无效,我需要从数据库中刷新模型并绑定那些特定的表单字段,然后再返回到相同的编辑视图以显示那些关联的 ModelState 验证错误。

这就是我惊奇和好奇的地方。我的假设是,为了让我将表单字段与刷新的模型绑定,我需要调用UpdateModel()or TryUpdateModel<>(),传入新刷新的模型。例如:

但是,我发现如果我只是返回refreshedModel视图而不调用TryUpdateModel<>()刷新的模型会自动与发布的表单字段值绑定!因此,TryUpdateModel<>()这里不需要!

我能理解它的唯一方法是,由于 ModelState 处于无效状态,一旦我返回带有刷新模型的视图,“MVC 渲染引擎”循环遍历 ModelState 错误并将这些属性值与我刷新的绑定模型。这简直太棒了!但是,我想要证明这个假设。我在网络上的任何地方都找不到有关此的文档。任何人都可以确认我的假设为什么/如何发生这种令人敬畏的自动绑定行为和/或教育我为什么/如何发生,希望有一些在线文档链接支持,以便我更全面地了解幕后发生的事情?

0 投票
3 回答
1714 浏览

asp.net-mvc - MVC UpdateModel 和子类与基类

我希望将 UpdateModel 方法用于在运行时检索的子类,如果有人可以阐明我是否正在对其进行总哈希和/或我是否正在尝试做是可能的。

我正在使用通用操作来控制一堆局部视图的验证;我试图避免对每个部分视图进行特定操作。

每个局部视图都有一个从基础模型派生的唯一模型:

我在 Action 上使用 FormCollection 来获取提交的表单元素及其值,这包括视图应该用来验证其请求的模型类型。忽略此示例的安全隐患,我知道它们,这是内部唯一的概念证明

这是我用来根据传递给控制器​​的模型类型返回子类的代码。

由于 StateModelClassFactory 方法的返回类型是基类,即使我实际上返回的是子类,UpdateModel 方法使用的模型绑定器也只绑定基类中的值。

关于如何解决这个问题的任何想法?

更新:

我创建了一个客户模型绑定器:

并将新的模型绑定器分配给正确的基类,以进一步了解幕后情况:

当我调试模型绑定器并检查 bindingContext 时,Model 属性表示正确的子类,但 ModelType 属性是基类的属性。我应该考虑在 BindModel 方法中更改 ModelType 吗?如果是关于如何执行此操作的任何指针,则 ModelType 上的设置器似乎已变得多余。我还注意到子类中的 SomeDateProperty 实际上在 PropertyMetadata 属性中......似乎非常接近我想要的行为。

0 投票
1 回答
544 浏览

asp.net - 更新 ASP.NET MVC 2 中的复杂模型?

如何更新复杂模型?我有以下观点:

我像往常一样尝试更新它,只是在模型对象上调用 UpdataModel:UpdateModel(week); 但这没有用。因此,我阅读了一些关于必须在复杂模型中分别更新每个属性的内容,并尝试使其适应我的情况。这是我在控制器中的尝试:

但这也没有用。如果属性是字符串,它似乎可以工作,但这是一个 int,编译器抱怨它必须是一个引用类型才能用作 TModel。

我不知道这是否是要走的路,我只需要了解如何能够更新这样的复杂类型模型。这不能太罕见,所以必须有一些标准方法,但我想不通......

有任何想法吗?

更新:

以下作品:

动作方法:

看法:

但是,更新必须像这样手动进行,这似乎不必要地复杂。我发现了 Phil Haack 的帖子(http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx),这似乎表明这应该可以用更简单的方式完成, 像这样:

即简单地接收 Week 作为方法的参数(在 Haacks 示例中,他甚至不需要调用 UpdateModel,只需将 View 绑定到对象似乎就足够了,所以我只需将其保存在数据库...但它对我不起作用。返回的 Week 对象似乎与发送到视图的对象不同,它的任务集合中没有项目,例如

那么为什么这不起作用呢?

0 投票
2 回答
1745 浏览

wpf - 应该使用哪个事件从 WPF 中的 TextBox(LostFocus、LostKeyboardFocus 等)更新模型?如何在 WPF 中设置事件的优先级?

我有一个应用程序,其中有很多文本框和一些按钮,如保存、另存为等。

当用户编辑文本框时,我必须检查数据库的某个范围,验证范围并更新数据库。如果用户输入的值有任何错误,那么我不应该让 TextBox 失去焦点。

我为此使用了 LostFocus 事件,它工作正常,直到最近我在我的应用程序中发现了一个错误。

错误:用户在 TextBox 中编辑一个值,然后单击“保存”按钮;未调用 LostFocus 事件,因此数据库未更新:(

现在我的问题是我应该在 TextBox 中使用哪个事件来更新数据库。我尝试了 TextChanged 事件,但它会验证每个字符并使我的应用程序变慢。我在为这种应用程序选择正确的事件时感到困惑!

注意:** 按钮位于不同的 UserControl 中!

编辑 1:我在单击按钮时附加了一些命令,这些命令在 LostFocus 之前执行!我可以设置优先级或附加行为或命令之类的东西应该在 LostFocus 之后执行吗?

编辑 2:我只是通过禁用一些命令来调试应用程序,我发现在某些情况下,DelegateCommand 在 LostFocus 之前执行,所以我想避免这种情况。我该怎么办?在开发过程中,我觉得开发纯 MVVM 应用程序是不可能的,所以我有点使用了一些代码隐藏!