asp.net-mvc - 如何绑定(bind)到 ASP.NET MVC 中的特定数组元素?

标签 asp.net-mvc data-binding

我正在使用 ASP.NET MVC RC1 并尝试将文本框绑定(bind)到对象属性,如下所示:

<%= Html.TextBox("Comments.Contacts[0].ContactName") %>

看起来它应该有效,因为它确实:

<%= ((MuralProject)ViewData.Model).Comments.Contacts[0].ContactName %>

但是可惜的是,文本框中的结果是一个空字符串。我做错了什么吗?

最佳答案

文本框扩展方法的第一个参数设置最终创建的输入元素的名称,并尝试根据该参数从 ViewData/Model 获取条目(对于使用 TypeDescriptors/反射的模型)。

它执行此操作的方式只是在点处分割输入字符串,然后通过反射检查 ViewDataDictionary 中的特定键和模型,因此在您给出的情况下,它将尝试查找 Contacts[0] 而不是会联系,但不会领取您的属性(property)。

要解决这个问题,您只需提供对象的实际值,例如

Html.TextBox("Comments.Contacts[0].ContactName", 
             Model.Comments.Contacts[0].ContactName)

如果您查看 MVC 源代码并查看 ViewDataDictionary 类,您可以自己看到这一点。

关于asp.net-mvc - 如何绑定(bind)到 ASP.NET MVC 中的特定数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/575151/

相关文章:

c# - 为什么没有人为 Winforms 编写 RadioMenuItems 类?

java - Spring:在 Controller 参数上绑定(bind)集合

php - 如何将函数/常量绑定(bind)到变量,PHP

asp.net-mvc - 在 foreach 中设置 var 的值 - Razor View Engine

javascript - 如何使用 Angular 1.x 服务从一个组件更新另一个组件?

时间:2019-03-17 标签:c#DatabindingsNull-ValueIssue

asp.net-mvc - ASP.NET MVC页面找不到引用

asp.net-mvc - RouteCollection 和路由表有什么区别

c# - 在 ASP.NET MVC 中的何处存储自定义类?

c# - MVC 模型绑定(bind)到嵌套类