问题标签 [model-binding]

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 投票
1 回答
268 浏览

c# - 更复杂的(现实生活)模型绑定?

和我一起滚动并想象以下示例:

这应该像这样做得更好

我之前尝试过正确的模型绑定,但我无法让它正常工作。所有示例都向您展示了它如何与一种极其简单的类型一起工作,而不是多种复杂类型。modelbinder 如何知道什么字段对应什么类型?如果有一个fruit1和一个fruit2怎么办?活页夹如何知道我的 IFruit 界面使用什么具体类型?此外,我想知道如果我想给我的 Person 一个 IEnumerable 水果,它会如何工作。

0 投票
3 回答
3549 浏览

.net - 动态表行未通过 jquery ajax 调用更新

通过 jquery ajax 调用提交数据时遇到了一个棘手的问题。基本上,使用 jquery动态添加到屏幕中的表单字段的表单值不会在批量保存命令上更新。

基本上我有一个网格列表,它显示保存到数据库的所有当前行,每列包含表单字段。然后我在页面顶部有一个表单,这是您典型的添加另一个详细信息表单。您键入您的值,按“添加”,这将通过 jquery json ajax 调用保存到数据库中,并且您的表单数据被添加并反映在列表表的新行中。(这部分有效)

我的问题在于当您希望更改新添加的 jquery 表行中的表单值时。按下保存按钮时,只会重新保存任何已构建的表格行。您的动态行表单数据不会保存。更新调用使用 jquery ajax 和 ASP.NET MVC 模型绑定。在“添加”上,我将一个 asp.net mvc“部分视图”返回到我的 jquery ajax 响应中,并且它被添加到使用$("#tablename tr:last").after(result).

如前所述,我已经推断出新的动态添加的行不会更新。我IList<Item>在我的 MVC 模型绑定列表中返回了一个集合到我的控制器操作方法,其中包含整个项目列表,减去新创建的 jquery 动态添加的表单字段行。这就是问题所在,也是为什么当您执行页面刷新时,行会回到初始添加时输入的原始表单值。

有什么想法为什么我IList<Item>的 's 不会包含这些动态添加的行?在 Firebug 中检查,他们在 name 属性中使用相同的命名约定,一切都应该没问题。

格雷厄姆。

5 月 1 日 11:00 GMT+10 更新:将模型绑定从 IList 更改为 FormCollection 时,我确实收到了这些值。我不想使用 FormCollection 而不是模型绑定,但是如果我可以通过 FormCol 正确获取它,为什么不使用 IList 模型绑定?我已经将数组条目与工作项进行了比较,它们都符合相同的标准和值。

0 投票
1 回答
2263 浏览

c# - 如何在这种情况下使用 TryUpdateModel?

在我的查询字符串中,我得到了一堆参数名称和值。据我了解,我应该使用内置的 asp.net mvc 函数 TryUpdateModel(modelInstance)。
似乎它没有像我预期的那样工作。我的参数名称在大写上有所延迟。这是一个问题吗?
此外,我有一些自定义类型需要特定的方法来执行一些业务逻辑检查,以将字符串转换为此类的实例。我应该把这个逻辑放在哪里?

0 投票
1 回答
2999 浏览

c# - ASP.NET MVC 模型绑定

我遇到了模型绑定问题。如果我确实在 CopyToModelStateDictionary 方法中使用了前缀,我不会收到无效控件的样式或验证消息。如果我使用前缀,我会收到样式和验证消息,但如果用户没有从动态创建的单选按钮列表中进行选择,页面会崩溃。我怎样才能得到两者?我不明白这里发生了什么。

错误信息

堆栈跟踪:

感谢您阅读我的问题!

0 投票
5 回答
6605 浏览

c# - 从强类型视图提交多个模型表单的模型绑定

我在提交多个模型的表单上绑定时遇到问题。我有一份投诉表格,其中包括投诉信息以及一对多投诉人。我正在尝试提交表单,但在绑定时遇到错误。ModelState.IsValid 始终返回 false。

如果我调试并查看 ModelState 错误,我会得到一个消息:“EntityCollection 已被初始化。在对象图的反序列化过程中,只应调用 InitializeRelatedCollection 方法来初始化新的 EntityCollection”。

此外,在调试时,我可以看到投诉模型确实从表单提交中填充了投诉人,所以这部分似乎正在工作。

我不确定我正在做的事情是否无法使用默认的 ModelBinder,或者我是否只是没有以正确的方式去做。我似乎找不到任何具体的例子或文档。可以在此处的 stackoverflow 上找到一个非常相似的问题,但它似乎无法处理强类型视图。

控制器代码:

查看代码(这是由创建/编辑视图调用的局部视图,它也使用 Complaint 进行强类型化):

0 投票
1 回答
277 浏览

asp.net-mvc - 如果我需要从自定义模型绑定器中检索对象,绑定器应该与服务层、存储库层还是...交互?

如果我有类似的课程:

当我创建自定义模型绑定器时,我的表单中的 Post 不会发送到 Pet,它会发送如下数据: firstName: "myFirstName" lastName: "myLastName" myPet: "myPetsName"

由于传入的是 Pet 的名称,而不是实际的 Pet 对象,因此需要从模型绑定器中检索 Pet 对象。

我的问题是,模型绑定器应该与服务层、存储库层交互,还是应该检索宠物?服务层的问题是我在初始化服务时似乎无法访问 ModelState:((this.ModelState)给我一个错误)

如果我需要模型绑定器来创建一个 Person 对象,那么需要以某种方式分配 Pet ......我应该怎么做?

0 投票
1 回答
1785 浏览

jquery - 如何使用 Jquery Ajax 进行模型绑定

我想使用模型绑定来让我的控制器看起来更干净,你可以看到使用模型绑定有多好:

对比

在进行模型绑定时,我们可以在Html.TextBox("")

jQuery呢?如何确保当我执行$.post(url, data, callback, dataType)$.ajax(options)调用Create(Person personToCreate)Person 对象时正确填充?

0 投票
1 回答
310 浏览

sql-server - 为了简化来自 Ajax 的模型绑定,允许空字段到数据库表是不好的做法吗?

请阅读此处此处以快速了解我的问题,并准确了解我所说的 Ajax 模型绑定的意思。

为了允许来自javascript的模型绑定,使外键字段可以为空是不是一个坏主意?

例如,我们想在 ajax 调用期间绑定到 Person 对象...(Person 类是从实体框架创建的)

如果Person有一个Pet对象是数据库中的外键,则不能将该Pet对象与来自 ajax 调用的其他数据一起传递。因此,除非Pet在数据库中可以为空,否则绑定到Person将不起作用。

所以我想知道的是......为了进行模型绑定,我应该/可以将我无法从 javascript 传递的 db 字段清空吗?或者我是否必须制作自定义模型绑定器并绑定到对象的“扁平”版本才能遵循最佳实践?对象的扁平版本示例:

我问这个的原因是因为我的许多实体框架创建的类都包含外键,这意味着我需要创建几乎所有这些类的平面副本,这似乎违背了整个DRY主体。

0 投票
1 回答
148 浏览

sql-server - 当涉及复杂类型时,您如何处理 ajax 和模型绑定?

从我的角度来看,我想在进行 ajax 调用时保持模型绑定。我正在使用jquery ajax进行调用,仅作为示例 - 这是我想从 ajax 调用的控制器方法:

如您所见,此方法依赖于Model Binding。这使该方法更加简洁......但是,这意味着当 ajax 进行调用时,它必须提供数据库中不可为空的所有变量。

因此,如果我有一个名为的表Person,其中包含变量:

然后,创建的实体框架类Person将类似于:

由于没有一个变量可以为空(如 DB 中所指定),这意味着 ajax 调用必须提供一个string firstName, string lastName, Pet myPet。但是javascript不能提供宠物...

所以我只有两个选择(我知道):

  1. 允许 myPet 在数据库中为空

  2. 创建一个“更扁平”的类来表示不需要宠物对象的 Person...

IE:

第一个选项的问题是,必须修改数据库似乎很奇怪......肯定有问题,因为它允许做不应该的事情......

第二个选项的问题是我有很多类,并且为每个类编写重复的类似乎很广泛,只是为了避免这种情况......如果我有 30 个类,那将是 30 个重复的类,我必须创建以允许模型绑定。

谁能想到任何更好的选择,或者就为什么一种选择会比另一种更好进行推理?

0 投票
2 回答
1352 浏览

asp.net-mvc - MVCContrib 网格并使用模型绑定器回发

我的 MVCContrib 网格的内容来自强类型视图上的模型。发布帖子时,当它返回控制器时,网格的内容不在模型对象中。我可以看到这是因为网格呈现为一个表格,其中包含单元格中的文本。有什么我可以做的,这样当帖子发生时,我发送到网格的列表数据会在帖子中返回?