问题标签 [modelbinders]

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 回答
1413 浏览

asp.net-mvc-2 - 派生对象列表的 MVC2 Modelbinder

我想要一个在 Asp.net MVC 2 中使用 Default Modelbinder 的不同(派生)对象类型的列表。

我有以下视图模型:

并且该列表包含不同派生类型的对象,例如

不管我是使用 List 还是 ArrayList 实现,所有的东西都在表单中很好地搭建起来,但是当回发到 ActionResult 时,modelbinder 不会为我解析派生对象类型属性。

什么可能是 Viewmodel 结构处理不同对象类型列表的好解决方案?为每种对象类型(例如 List、List 等)提供一个额外的列表对我来说似乎不是一个好的解决方案,因为这在构建视图模型并将其映射回域模型时都会产生很多开销。

考虑在自定义模型绑定器中绑定所有属性的另一种方法,我怎样才能在此处使用数据注释方法(验证所需属性等)而无需大量开销?

0 投票
3 回答
1589 浏览

asp.net - 使用 MVC 库的 ASP.NET Web 窗体中基于属性的验证?

ASP.NET Webforms 中是否有办法适应基于属性的验证。如果是这样,任何已证明这一点的网址。我不是在寻找开源项目。就像可以在 Web 窗体中使用 MVC 路由一样,是否可以使用验证框架?

0 投票
1 回答
1685 浏览

asp.net-mvc - asp.net MVC 1.0 和 2.0 货币模型绑定

我想创建模型绑定功能,以便用户可以输入“,”“。” 等用于绑定到我的 ViewModel 的 double 值的货币值。

我可以通过创建自定义模型绑定器在 MVC 1.0 中执行此操作,但是自从升级到 MVC 2.0 后,此功能不再起作用。

有没有人有任何想法或更好的解决方案来执行此功能?更好的解决方案是使用一些数据注释或自定义属性。

一个首选的解决方案是这样的......

下面是我在 MVC 1.0 中模型绑定的解决方案。

0 投票
5 回答
32436 浏览

c# - ASP.NET MVC - 带有来自 URL 的附加参数的 POST 操作方法

使用 ASP.net MVC 是否可以将表单发布到控制器操作,其中包含不在表单中但来自 URL 的参数?

例如

GroupController 中的 Action 方法:

路线:

发布网址:

在此示例中,表单被发布到不同的控制器,模型具有正确的值,但其他参数的默认值为 0。

我期望的行为是 ModelBinder 会看到我有两个与给定路由匹配的参数,并以与 GET 操作相同的方式将当前值 1 和 42 分配给参数。

不支持这种行为,还是我遗漏了什么?

编辑:需要明确的是Show,控制器视图上Employee的表单包含一个发布到不同控制器的表单。我们可以称之为Group

表单操作 URL 如下所示

表格声明如下

在尝试了许多不同的重载后,Html.BeginForm我发现只有当表单操作 URL 与浏览器地址栏中的当前 URL 匹配时才会映射参数。

因此,如果我导航到 URL /Groups/Create/1/42,我将有一个新表单。如果我随后提交表单,则 URL 路由值将传递给 POST 操作。

0 投票
4 回答
6190 浏览

asp.net - ASP.NET MVC 2 - ViewModel 前缀

我想在我的视图中使用 RenderPartial 两次,并关联不同的模型。问题是两个模型中都存在一些属性(昵称、密码)。它们没有前缀,因此即使是 id 或名称在输出中也是相等的。现在,如果我有昵称或密码的模型错误,这两个字段都会突出显示。

主视图:

登录部分视图:

注册部分视图:

我怎样才能改变这个?

0 投票
1 回答
1469 浏览

c# - ASP.NET MVC 中一个模型的多个自定义模型绑定器

这是适用于 MVC 1 和 2 的一般模型绑定问题。我想知道 MVC2 是否会更好,但这是我的问题:

我有一个相当复杂的模型:

我的 IEvent 类有一个自定义模型绑定器,它基本上完成了 IEvent 的所有绑定。我调用默认模型绑定器来绑定Contacts列表,效果很好。

我准备开始尝试绑定这些DatesLocations东西,但我想确保我做的事情正确。

总的来说,我不确定我是否了解模型绑定的所有细节。为其中的列表设置多个模型绑定器会更好,IEvent还是只有一个IEvent模型绑定器(就像我现在正在做的那样)调用它需要的列表的默认绑定器。

专家是怎么做的?:P

0 投票
2 回答
2130 浏览

asp.net-mvc - Asp.Net MVC 2 - 遍历模型绑定器中的表单值

我的表单中有一个项目列表,这些项目的名称如下......

我想创建一个自定义模型绑定器,将它们转换为具有这种结构的模型......

因此,每个 ListItem 都应转换为 MyModelItem,其 id 等于输入 id 末尾的数字,值设置为输入字段上的值。

在 ASP.Net MVC 1.0 中,我可以遍历bindingContext.ValueProvider.Keys集合并检查key.StartsWith("ListItem")以找到这种格式的所有输入项。

ASP.Net MVC 2 中的新 IValueProvider 接口没有键集合,我无法遍历该接口。 如何在 ASP.Net MVC 2 的设计时访问这些我只知道前缀的值?

0 投票
1 回答
1270 浏览

asp.net-mvc - ASP.NET MVC 2:使用 EntitySet 更新 Linq-To-Sql 实体

我有一个具有 EntitySet 的 Linq to Sql 实体。在我的视图中,我显示实体及其属性以及子实体的可编辑列表。用户可以动态添加和删除这些子实体。到目前为止,DefaultModelBinder 工作正常,它正确绑定了子实体。

现在我的问题是我无法让 Linq To Sql 删除已删除的子实体,它会很乐意添加新实体但不会删除已删除的实体。我在外键关系中启用了级联删除,Linq To Sql 设计器在外键关系中添加了“DeleteOnNull=true”属性。如果我手动删除这样的子实体:

这将从数据库中删除子记录。但我无法让它适用于模型绑定对象。我尝试了以下方法:

这会引发 InvalidOperationException,我有一个德国操作系统,所以我不确定错误消息是什么英文,但它说的是实体需要版本(时间戳行?)或没有更新检查策略. 我已将 UpdateCheck="Never" 设置为除主键列之外的每一列。

我已经阅读了很多关于 Linq To Sql 的类似“问题”,但似乎大多数这些“问题”实际上是设计使然。那么我的假设是否正确,这不像我期望的那样起作用?我真的必须手动遍历子实体并手动删除、更新和插入它们吗?对于这样一个简单的对象,这可能有效,但我计划使用嵌套的 EntitySet 等创建更复杂的对象。这只是一个测试,看看什么有效,什么无效。到目前为止,我对 Linq To Sql 感到失望(也许我只是不明白)。对于这种情况,Entity Framework 或 NHibernate 会是更好的选择吗?或者我会遇到同样的问题吗?

0 投票
1 回答
1699 浏览

asp.net-mvc - 自定义模型绑定器未触发

这是我的自定义模型活页夹。我在 BindModel 设置了断点,但没有被这个控制器操作触发:

...

我的注册:

// 尝试了这两行

0 投票
2 回答
1123 浏览

asp.net-mvc - 为派生对象及其基础添加自定义模型绑定器

我的班级图:

基本内容类

  • 页面继承 BaseContentClass
  • Tab 继承 BaseContentClass
  • ...

如果我这样做

然后当出现 Tab 类型的控制器动作参数时,不会触发自定义模型绑定器。

如果我这样做,它会被解雇:

但是我不想在 global.asax.cs 中编写“n”个 Add 语句来将所有派生类与我的自定义模型绑定器相关联,对吗?我不知道我是否还有其他选择。