问题标签 [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 回答
1295 浏览

asp.net-mvc-2 - 为什么我的复选框没有绑定到我的视图模型?

我有一个企业的视图模型。该模型包含一个用于地址、联系方式的视图模型以及一个 IEnumerable。

我使用编辑器模板来显示复选框。问题是当我进行编辑操作并发布表单时,类别返回为空。我已经阅读了一些类似的问题,但还没有找到似乎可行的解决方案。

我调查了自定义模型绑定器,但没有运气,目前我认为我没有在编辑器模板中显示正确的信息。我知道复选框需要一个隐藏的输入来配合它们,也许我的问题就在那里?

业务视图模型

复选框视图模型

复选框编辑器模板

这是模板生成的片段:

0 投票
1 回答
69 浏览

c# - 这个来自 jquery 的模型绑定,有什么问题?

我有以下动作:

我用下面的 jquery 调用它:

我的 GetGridCell 操作中的参数永远不会被填充(它们为空)。调试时,我可以看到我的 Request.Form[0] 被称为经度并且具有正确的值。纬度也是如此。

当我使用完全相同的代码,但$.get一切正常。

我究竟做错了什么?

0 投票
2 回答
3723 浏览

c# - 在 asp.net-mvc(2) 中 Modelbinding double 的 CultureInfo 问题

在我的 Jquery 脚本中,我使用浏览器的 CultureInfo (en-UK) 发布了两个双打,它使用了.作为分数分隔符。我的 MVC 应用程序正在使用 locale nl-BE,作为分数分隔符的服务器上运行。

由于解析问题,模型绑定失败。

我认为最好将我的 javascript 设置为 en-UK 并且对于我的 MVC 应用程序中的模型绑定也是如此。但我也不知道该怎么做。
有什么建议么?

0 投票
1 回答
547 浏览

c# - 从数据库条目创建 DropDownList,然后将其绑定到表单提交中

我在数据库表中存储了一个枚举条目,其中只有以下字段:IDName。我想在表单的 DropDownList 中显示存储在此表中的值。然后用户选择一个值并提交表单。

找到了一种从枚举轻松创建 DropDownList 的方法(尽管最好使用表中所有记录的 Name 字段填充 DropDownList)。但是,我还没有找到一种方法将表单提交中的 DropDownList绑定到一个整数值,以便与其他表单值一起放入数据库(FK - PK)。

您能否提供一些示例代码来说明如何进行此类绑定?

更新:感谢您的精彩回答。我还有一个问题:是否可以通过 AJAX 获取 DropDownList 内容并将其放入 DropDownList 和 ViewModel 中的 SelectList 中(同时带有 ID 和 Name 参数)?我想根据用户输入的内容有选择地获取内容,然后我希望 ViewModel 填充该获取的数据。

0 投票
1 回答
534 浏览

c# - 如何让模型绑定与 ASP.NET MVC 中的自定义对象一起使用?

我想为富客户端应用程序采用 ASP.NET MVC 模型绑定。我有以下控制器操作:

以前使用 HTML 表单,只要表单 HTML 输入名称与 的属性名称匹配User,模型绑定就会自动发生。

我了解模型绑定还会查看路由数据和querystring绑定到实体的值,但是当我放置与属性匹配的查询字符串值时,我得到一个404.

我无法让这个ActionResult工作。我是否需要使用与用户类的属性匹配的参数来配置路由?

0 投票
2 回答
26560 浏览

c# - 复选框和模型绑定的动态列表

我正在尝试创建一个包含从数据库动态创建的复选框列表的视图,然后在回发表单时检索选定的列表。

我的 EF 模型包含一个类:

我有一个包含以下列表的视图模型:

我的控制器获取方法:

我的观点:

我的控制器发布方法:

我似乎无法让它工作。我的基本问题与代码片段中的注释混合在一起,但回顾一下:

  • 我的视图模型好吗?(我是否需要添加任何内容来捕获所选内容,而不是简单地显示列表?)
  • 我究竟应该在视图中放置什么来呈现每个复选框?
  • 发布后如何访问控制器中选定的复选框?
0 投票
1 回答
309 浏览

asp.net-mvc - ASP.NET MVC - 清理复杂模型绑定场景中的 URL

在我正在构建的一个应用程序中,我构建了一个非常灵活的基于属性的系统,用于在我的数据库中描述产品,其中每个产品可以分配给它的属性数量不定,每个属性都有一个“类型”。因此,例如,一种属性类型可能是“类别”,而分配给单个属性的值可能类似于“卡车”。分配给给定产品的属性数量没有限制,并且由于属性和属性类型与产品一起存储在数据库中,因此我的应用程序不会提前知道它们中的任何一个。

给定属性类型的选项的特征之一是它是否“可搜索”。如果属性是可搜索的,我可以使用它的值与其类型名称配对来搜索/过滤我的产品。因此,例如,用户可能希望返回属性类型“类别”等于“卡车”且属性类型“颜色”等于“红色”的所有产品。那里没有什么太独特的地方。

我正在处理的问题是,因为我的系统不提前知道我的属性类型名称是什么,所以我无法轻松地创建一个操作方法来接受像string categoryor这样的可读格式的参数string color。作为一种解决方案,我利用了 DefaultModelBinder 对绑定到字典的支持。使用这种方法,我只需要以正确的结构格式化我的字段名称,然后我的操作方法就可以接受IDictionary<string,string> parameters. 这一切都很好,但是当用户通过单个参数执行基于链接的过滤器时,它会产生一些非常讨厌的 URL,即“查看类别卡车中的更多产品”。使用 DefaultModelBinder 绑定到字典要求您的字段命名模式类似于以下内容:

这不仅令人难以置信的冗长,而且由于每个键/值必须在字段名称中包含序数索引这一事实,它也有些令人沮丧。虽然这对于 POST 表单是可以接受的,但它在 GET URL 中并不是特别理想,因为我们最终得到的 URL 类似于?parameters[0].Key=Category&parameters[0].Value=Trucks&parameters[1].Key=Manufacturer&parameters[1].Value=Ford. 这不仅丑陋,而且在实现上也非常有限,因为对 URL 的任何修改都可能破坏整个结果集(如果用户只想通过修改 URL 来搜索第二个参数,他们将不得不删除第一个参数并适当地重新编号整个集合)。

我正在寻找的是一种更好的方法来处理这种情况。理想情况下,我只想有一个查询字符串值?Category=Red并进行相应的过滤,但是我的操作方法不知道是否真的有一个“类别”参数要绑定到。是否有任何介于两者之间的东西可以让我拥有更清晰的查询字符串参数,这些参数不会导致如此糟糕的 URL 结构?

我正在考虑可能构建自己的自定义 ModelBinder,但如果有其他方法,我想避免这种情况。

0 投票
2 回答
182 浏览

asp.net-mvc-2 - 在一个动作中绑定两个相同类型的对象

我有一个页面收集有关相同类型的两个对象的信息。提交页面时,处理提交信息的操作正在尝试使用模型绑定,类似于:

它成功地绑定了其中一个,但没有成功绑定另一个。有没有人有任何建议/资源等可以帮助我让它工作?

如果需要,我可以删除/重命名并发布各个部分的实际代码。

0 投票
2 回答
1439 浏览

c# - 包含多个对象的 ViewModel 的模型绑定

我有一个 ProductListingViewModel 类型的强类型视图,它又包含一个 ProductViewModel。(两个自定义视图模型)。

我的页面上有一些表单元素,它们的创建方式如下:

生成 HTML:

使用默认模型绑定,我希望当我发布到接受 ProductListingViewModel 类型参数的控制器操作时,它会知道用相关数据填充 ProductViewModel.CategoryId。

选择列表的名称似乎表明它知道有一个具有 CategoryId 属性的 ProductViewModel 但是当我发布到我的控制器方法时,ProductViewModel 为空。如果我在构建 ProductListingViewModel 期间创建它,那么它不再为空,但默认绑定器似乎没有像我预期的那样填充属性。

这是自定义模型绑定器的情况,还是我只是缺少一些基本的东西?

干杯。

0 投票
2 回答
1804 浏览

asp.net-mvc - 向 DefaultModelBinder MVC2 添加多个前缀

我查看了大多数 ModelBinding 示例,但似乎无法收集到我要查找的内容。

我想要:

在 post 上绑定到这个方法

用户输入模型在哪里

约定是使用没有“InputModel”的类名,但我不想每次都用 BindAttribute 指定这个,即:

我尝试过覆盖 DefaultModelBinder,但似乎找不到合适的位置来注入这一点功能。