问题标签 [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 投票
2 回答
1542 浏览

asp.net-mvc-2 - ASP.Net MVC 2 - 模型绑定和字典

在我的界面中,我有一个文本框列表,如下所示: http ://screencast.com/t/YjIxNjUyNmU

文本框的数量是未知的,因为它们中的每一个都与一个模板相关联。在我的页面中,目标是将数字与其中一些模板相关联。

这是一个示例 HTML 代码:

在我的控制器中,我期望得到一个 IDictionary,其中第一个 int 是模板 ID ,另一个是用户给出的计数。

这是我想要的:

我尝试了很多东西,但没有任何效果。我试图阅读源代码,但它是一个迷宫,我正在头疼试图获取有关模型绑定的信息。

问题 :

  • 是否有关于模型绑定如何工作的良好资源?我想要一些详尽的内容,我厌倦了讨论给定特定示例的 84093043 博客。
  • 如何构建我的 HTML,用于获取 IDictionary(甚至是控制器操作中的 IDictionary?

非常感谢你的帮助

0 投票
2 回答
17065 浏览

asp.net-mvc - 在 MVC 中绑定到 SelectList

我再次面临“这不应该是这样的?*!#hard”的情况。

问题:我想在 MVC 中使用表单来创建对象。对象的一个​​元素是一组有限的选择——下拉列表的完美候选者。

但是,如果我在我的模型中使用 SelectList,并在我的视图中使用下拉列表,然后尝试将模型发布回我的 Create 方法,我会收到错误“Missing Method Exception:No Parameterless constructor for this object”。探索 MVC 源代码,似乎为了绑定到模型,Binder 必须能够首先创建它,并且它无法创建 SelectList,因为它没有默认构造函数。

这是简化的代码:对于模型:

对于控制器:

对于视图:

现在,我知道我可以通过后退 10 码并下注来完成这项工作:绕过模型绑定并返回到 FormCollection 并自己验证和绑定所有字段,但必须有一个更简单的方法。我的意思是,这是一个尽可能简单的要求。有没有办法在 MVC ModelBinding 架构中完成这项工作?如果是这样,它是什么?如果没有,怎么会?

编辑:嗯,我脸上有鸡蛋,但也许这对其他人有帮助。我做了一些更多的实验,并找到了一个似乎可行的简单解决方案。

提供一个简单值(字符串或整数,具体取决于您的选择列表值类型),并将其命名为您绑定到的模型元素。然后提供第二个元素作为选项的选择列表,并将其命名为其他名称。所以我的模型变成了:

然后View中的DropDownListFor语句就变成了:

当我这样做时,提交按钮正确地将表单中的选择绑定到字符串 Choice,并将模型提交回第二个 Create 方法。

0 投票
5 回答
7749 浏览

c# - 提交后 MVC2 TextBoxFor 值不更新?

这是一个非常奇怪的行为,我设置了一些演示代码来试图弄清楚发生了什么。

基本上有两个动作和一个视图。第一个动作将一个空模型发送到视图,部分动作接收模型,更改其内容并将其发送回同一视图。

奇怪的是,在视图中,模型似乎包含更新的值,但是当我执行 Html.TextBoxFor(x => x.PropertyNameHere) 时,它会呈现一个包含未更改值的文本框。

大声笑...我提前为厕所幽默道歉,但它让这一天不会变得太无聊。;)

有谁知道这里发生了什么?为什么 TextBoxFor 的输出将旧值放在 value 属性中?

这是要复制的代码:

/Views/Demo/Index.aspx

演示模型.cs

演示控制器.cs

这是奇怪的输出:

离奇

0 投票
1 回答
412 浏览

asp.net-mvc-2 - 模型绑定和派生模型类

当您拥有从其他人继承的模型类时,ASP.NET MVC 是否提供任何简单的方法来使模型绑定工作?

在我的场景中,我有一个强类型为List<Person>.

我有几个继承自 的类Person,即PersonTypeOnePersonTypeTwo

我有三个强类型的局部视图,它们的名称与这些类名匹配(并为它们各自模型的属性呈现表单元素)。

这意味着在我的主视图中,我可以拥有以下代码:

这很好用,除了当用户提交表单时,相关的控制器操作方法只是得到一个List<Person>,而不是Person,PersonTypeOne和的列表PersonTypeTwo

这与预期的差不多,因为表单提交不包含足够的信息来告诉默认模型绑定器创建任何实例PersonTypeOnePersonTypeTwo类。

那么,有没有办法从默认的模型绑定器中获得这样的功能呢?

0 投票
2 回答
1425 浏览

asp.net-mvc - ASP.NET MVC - 将子实体绑定到模型

这对我来说似乎很痛苦,但由于某种原因,我无法让它按照我想要的方式工作。也许我这样做是不可能的,但这似乎不太可能。这个问题可能有点相关:ASP.NET MVC Model Binding Related Entities on Same Page

我有一个 EditorTemplate 来编辑具有多个相关实体引用的实体。呈现编辑器时,会为用户提供一个下拉列表以从中选择相关实体,下拉列表返回一个 ID 作为其值。

发送请求时,表单值按预期命名:“Entity.ID”,但是我定义为操作参数的强类型模型没有填充请求中传递的值的 Entity.ID。

我尝试摆弄 Bind() 属性并Bind(Include = "Entity.ID")在 entityWithChildEntities 上指定,但这似乎不起作用。我也尝试过Bind(Include = "Entity"),但这导致 ModelBinder 尝试绑定完整的“实体”定义(不足为奇)。

有没有办法让默认模型绑定器填充子实体 ID,或者我需要为每个子实体的 ID 添加操作参数,然后手动将值复制到模型定义中?

0 投票
0 回答
441 浏览

c# - ASP.net MVC Linq-To-SQL 多对多字段绑定

可能重复:
使用 LINQ to SQL 在 ASP.NET MVC 中建模多对多关系

你好呀,

这个问题的简短版本是“有没有一种方法可以优雅地处理具有已在部分类中设置的多对多字段的对象的数据库插入?” 抱歉,如果以前有人问过。

示例
假设我有一个带有表的典型 MVC 设置:

  • 帖子 {PostID, ...}
  • 类别 {CategoryID, ...}

一个帖子可以有多个类别,一个类别可以标识多个帖子。因此,进一步假设我需要一个额外的表:

  • PostCategories {PostID, CategoryID, ...}

这处理了帖子和类别之间的多对多关系。据我所知,目前无法在 Linq-to-SQL 中执行此操作,因此我必须通过向项目中添加部分 Post 类来添加该功能,从而将其硬塞进去。就像是:

所以我现在可以创建一个自动填充“类别”UI 项的“创建”视图。它甚至可以像任何其他领域一样处理 - 有趣!

这就是麻烦开始的地方。

所以这是我的问题:
如何让自动对象模型绑定与具有多对多控制关系的对象干净地工作?使多对多关系成为可能的解决方法依赖于具有 PostID 的 Post 对象,以便与 CategoryID(s) 关联,该 CategoryID 仅在提交 Post 对象以进行验证和插入后发布。

这里有点 Catch22。您可以提供的任何术语、链接或提示都会非常有帮助!

0 投票
1 回答
849 浏览

asp.net-mvc-2 - Asp.Net MVC 2:视图模型在回发时究竟如何绑定回模型?

抱歉篇幅太长,但一张图值 1000 字:

在 ASP.NET MVC 2 中,输入表单字段“名称”属性必须完全包含以下语法,您将使用该语法在 C# 中引用对象,以便在回发时将其绑定回对象。也就是说,如果您有一个如下所示的对象,其中它包含具有多个 OrderLine 的多个订单,则名称看起来和工作良好(区分大小写):

这有效:

但是,我们想在客户端浏览器中添加订单行和删除订单行。 显然,索引必须从零开始,并且包含到 N 的每个连续索引号。

黑带忍者 Phil Haack 的博客条目在这里解释了如何删除[0] 索引、具有重复名称以及让 MVC 使用 [0] 表示法自动枚举重复名称。但是,我未能使用嵌套对象将其绑定回来:

这失败了:

我还没有找到任何建议来描述如何在帖子上绑定嵌套的 ViewModel。 任何指向现有代码示例的链接或关于使用 IList 进行嵌套绑定所需的确切名称的严格示例?

史蒂夫桑德森在这里有做这种事情的代码,但我们似乎无法让它绑定回嵌套对象。任何没有 [0]..[n] 并且编号连续的东西都会从返回对象中删除。

有任何想法吗?

0 投票
2 回答
3111 浏览

c# - MVC 模型绑定到接口

我创建了一个OrderFormViewModel,它看起来像

这将转到我的创建视图,其中每个部分(即交付详细信息、付款详细信息......等)然后被传递到捕获必要字段的部分视图。

我认为这一切都很整洁,直到我运行它并意识到 MVC 模型绑定器当然不知道如何实例化任何接口。

有没有办法以某种方式解决这个问题?

我也在尝试使用 Unity 容器学习 DI,因此我试图避免在我的 UI 项目中引用任何具体的类(模型在一个单独的项目中)。

0 投票
2 回答
978 浏览

asp.net-mvc - 使用非顺序索引将模型绑定到列表。以后可以访问索引吗?

我正在关注 Phil 关于模型绑定到列表的精彩教程。

我使用这样的输入名称:

这很好用,数据可以很好地返回模型,填充书籍列表。

我正在寻找的是一种在模型中访问用于发送书籍的索引的方法。我想得到那个号码,“5804”。这是因为索引具有语义重要性。如果我可以访问它,它可以让我免于在对象上设置另一个属性(书籍 ID)。

有没有办法在调用 UpdateModel 之后在 FormCollection 或模型上查看索引在发送时是什么?

0 投票
1 回答
849 浏览

asp.net-mvc-2 - 如何在 ASP.NET MVC 中处理嵌套模型

我一直在寻找关于如何正确处理具有嵌套属性的模型绑定的良好工作解决方案。我有一个模型,其中包含其他子模型的列表,如下所示:

在控制器中,我尝试像这样更新数据:

但是 TryUpdateModel 总是返回 false,并且 UI 中不会显示任何验证消息。UI 是使用标准 MVC 帮助器 EditorFor 构建的。

这样做的最佳做法是什么?对于一个非常正常的情况,没有那么容易找到信息。

谢谢!