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

asp.net-mvc - asp.net mvc Beta1中的模型绑定

我将我的 Web 应用程序从预览版 3 转换为 beta1,现在正尝试使用框架的新功能。其中之一是模型绑定。

对于这种特殊情况,我创建了一个类(目前)只是一堆简单类型属性的容器。如果我用一堆文本框创建一个表单,我希望框架用这些字段填充一个 SearchBag 实例。

  • 我从哪里开始?这种行为是开箱即用的还是我实现了 SearchBagBinder?我快速浏览了 IModelBinder,但无法完全理解它,并且 DefaultModelBinder 源代码并没有让我变得更聪明。
  • 这个 ModelBindingContext 是什么?
  • 如何访问我的表单域?
  • 如果值不是通过表单传递而是直接输入 URL 会怎样?
  • 我在哪里可以找到这方面的最新信息(大多数博客都已过时)?我以为我曾经读过菲尔的一篇文章,但我似乎再也找不到了。

任何帮助表示赞赏。

0 投票
1 回答
1197 浏览

c# - 带有引用类型参数的 Html.BuildUrlFromExpression 操作

我希望我的术语是正确的。如果没有,请编辑。

从我的 Linq2Sql 类中,我有一个 Color 类。我的控制器的一个动作接受这个 Color 类的一个实例。

我想创建一个指向此操作的链接,所以我使用

ViewData.Model.ActiveColor 当然是前面提到的 Color 实例。
这呈现如下:

/Color/Details?color=- 不完全是我的想法。

我究竟做错了什么?我应该开始创建自定义 ModelBinders 吗?

编辑
我找到了“-”的来源。显然 ActionLink 正在调用 ToString。这很奇怪,因为我看到 tostring 更多的方式来显示一些东西然后识别一些东西(这不是 GetHash 的用途吗?)。即使在我的对象上实现了 Iserailizable 接口后,它仍然使用 ToString 方法。我可以在某处定义如何序列化我的类而不是使用 ToString() 吗?我觉得我完全走错了路。

0 投票
2 回答
716 浏览

asp.net-mvc - 如何在没有表单的情况下将未持久的修改对象从视图传递回控制器?

简短:模型绑定如何将对象从视图传递到控制器?

龙:
首先,根据用户通过搜索表单给出的参数,从数据库中检索到一些对象。这些对象被赋予对客户可见(但不定义)的元数据(例如:对象的命名和定价因地区而异)。
稍后在站点中,用户可以单击应显示这些对象详细信息的链接。因为这些元数据对于显示很重要,但不是定义,所以我需要在控制器中取回之前更改的对象。当我使用默认的 asp.net mvc 模型绑定时,使用了 .ToString() 方法。这当然不会返回用于重新创建完整对象的相关字符串。
我本以为会涉及 ISerializable 接口,但事实并非如此。我应该如何去获得预期的效果?我无法想象我是第一个面临这个问题的人,所以我想我在某个地方遗漏了一些东西......

0 投票
4 回答
1397 浏览

asp.net-mvc - 使用 SelectList 进行模型绑定

我使用 Html.DropDownList(string NameSelectListInViewData) 方法创建了一个 DropDown。这会生成具有正确值的有效 Select 输入。一切都很好。

然而,在提交时,源 SelectList 中的值未绑定。

案例: ViewData.SearchBag.FamilyCodes:

生成下拉列表的 Html:

生成的html:

在我的控制器中,我有一个带有参数 searchBag 的操作。

所有其他字段都绑定得很好,只有选择框没有。有任何想法吗?

更新
对于未来的读者来说,阅读这篇博文可能是值得的: http: //haacked.com/archive/0001/01/01/model-binding-to-a-list.aspx

0 投票
2 回答
1863 浏览

asp.net-mvc - System.StackOverflowException 未处理(MVC 模型绑定)

使用 Model Binder 发回表单时,我开始收到此错误。为了测试这个问题,我将回发减少到模型的一个字符串属性,但我仍然得到溢出错误。谁能建议会导致这种情况的原因?

更新问题似乎与模型中作为外键的属性有关。如果删除此键,则绑定有效。如何进行绑定并包含外键关系?

0 投票
2 回答
11843 浏览

c# - Asp.NET MVC 模型绑定 - 使用绑定参数属性为简单类型分配前缀

我有一个带有控制器操作的 .net mvc 应用程序,它接受用户注册帖子。我有以下 UI 字段:电子邮件地址、名字、姓氏、密码和确认密码。其中一些字段不属于模型对象(即确认密码不属于用户模型,只有密码)。我的注册表单与登录表单位于同一视图中。所以我必须在同一个视图上独立表单,每个回帖返回不同的操作。

我想我可以为表单元素分配前缀,以分隔注册和登录之间的类似字段。我遇到的问题是关于验证,如果发生错误,则重新加载视图,显示验证消息,但电子邮件(存在于登录和注册中)等字段都将使用先前输入的地址填充。此外,我在登录和注册字段上方都有一个验证摘要。当注册过程中发生错误时,两个验证摘要都填充了错误消息。我认为为字段(register.fieldname 和 login.fieldname)分配前缀可能有助于解决这些问题。

因此,当注册操作处理帖子时,它不再查找注册表单字段的值,而是返回 null。以下是用于此操作的方法签名...

关于这里发生的事情的任何输入都会很棒。

谢谢杰里米

以下来自我的ui,它代表注册表....

0 投票
1 回答
16027 浏览

asp.net - ASP.NET MVC 模型绑定 IList<> 参数

[我自己解决了这个问题,请参阅我的答案]

我无法在正确设置的控制器方法中获取 IList<> 参数的表单值。

我的控制器类如下所示:

略微修剪的形式:

这会产生如下标记:

我检查了提交的表单值,它们是正确的。正确数量的ShoppingBasketItems 也被放入Session["basket"] 中,但是每个的ItemIDItemQuantity都为零。它似乎正确解码了表单值列表,但没有获取属性本身。

我正在使用 MVC RC2,根据Scott Hanselman 的一篇文章,我很确定我的代码是正确的。我错过了什么吗?

0 投票
3 回答
10155 浏览

asp.net-mvc - ASP.NET MVC 模型绑定外键关系

是否可以将我的模型上的外键关系绑定到表单输入?

Car假设我在和之间存在一对多的关系Manufacturer。我想要一个用于更新的表单,Car其中包括用于设置的选择输入Manufacturer。我希望能够使用内置模型绑定来做到这一点,但我开始认为我必须自己做。

我的操作方法签名如下所示:

该表单发布值 Name、Description 和 Manufacturer,其中 Manufacturer 是 type 的主键int。名称和描述设置正确,但制造商设置不正确,这是有道理的,因为模型绑定器不知道 PK 字段是什么。这是否意味着我必须编写一个IModelBinder它意识到这一点的自定义?我不确定这将如何工作,因为我的数据访问存储库是通过每个Controller构造函数上的 IoC 容器加载的。

0 投票
2 回答
2790 浏览

asp.net-mvc - 模型绑定和 GET 请求?

在 html 表单中有大量的模型绑定示例,但我想知道是否可以,如果可以,如何使用模型绑定来处理 ActionLinks/GET 请求。

所以,给定以下模型

和以下路线(我不确定这将如何形成;我展示它是为了展示我希望 URL 如何展示属性 Str、Chr 和 Dbl)

我想在我的控制器中以这种方式使用它

在我的页面中以这种方式(两种可能的选择;还有更多吗?)

模型绑定基础设施可以做到这一点吗?如果是这样,需要对我的样品做些什么才能让它们发挥作用?

0 投票
1 回答
623 浏览

asp.net-mvc - 自定义 IModelBinder 和数据库访问

对于我的 asp.net mvc 项目中的用户对象,我编写了一个自定义模型绑定器来检查密码是否有效以及是否输入了两个匹配的密码等。

登录名需要是唯一的,我想知道我是否可以在模型绑定器中检查它,或者这被认为是不好的做法?

问题是在你到达控制器之前就调用了绑定器,所以我会有两个我的 dataContext 实例浮动,因此有多个到数据库的连接,我想我可以为此建立一个工厂。

这是我现在在控制器中所做的代码片段: