问题标签 [modelbinder]
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.
asp.net-mvc - ASP.NET MVC Beta 支持列表中的模型绑定器?
以下面的示例类为例。我想在表单上显示客户和两个地址(来自 LIST)。MVC beta 中的模型绑定器是否支持这一点,还是我必须编写自己的自定义绑定器?
您将如何对这些字段进行编码?像这样?
asp.net-mvc - 模型绑定器中的模型绑定
首先,请容忍我在这里。我有一个自定义模型绑定器,它成功地将表单数据映射到自定义对象。在此模型绑定器中,它还将表单项映射到不同的自定义对象。我觉得我应该能够做的是创建一个单独的模型绑定器来处理第二个映射。这是一个简化版本。
自定义对象:
如果我的表单为 SubCategories 传回了一堆 Id,我需要做的是运行到数据存储库并水合 SubCategory 对象。从表格中,将按以下格式提交子类别列表:
编写自定义来映射类别显然很简单,但编写模型绑定器将依次映射子类别(在模型绑定器中,我会运行查询我的数据存储库)证明有点困难。
我不确定我说得有多清楚,抱歉,感谢您的阅读,如果有什么我可以说的让我更清楚,请告诉我!
asp.net-mvc - ASp.NET MVC:TryUpdateModel 不会更新所有属性
我有以下动作:
发生的情况是 TryUpdateModel 没有填充属性“Person.Name”。
这是我的表格:
关于为什么会发生这种情况的任何想法?谢谢
jquery - ASP.NET MVC ModelBinder 不能处理 GET 请求和/或 jQuery AJAX?
当通过 GET 而不是 POST 调用时,让 MVC 填写我的自定义模型参数似乎有问题。
我有一个 JavaScript 片段,它调用如下操作:
它的作用基本上是调用一个单独的操作,将与调用页面相同的查询字符串传递给它。然后如果结果为“OK”,则刷新当前页面。
动作定义如下:
型号为:
调用 URL(用 firebug 验证)就像/DoSearch?Query=some+query
. (也试过/DoSearch?searchParameters.Query=some+query
没有成功)
无论我尝试什么,我的参数总是显示为空(不是 null,只是所有参数都被初始化为其默认值)
如果我这样定义动作:
然后我的参数被正确填写。然而,与模型无关。
我假设:
a) 填充对象模型不适用于 GET 请求。
b) 我做错了什么
有任何想法吗?谢谢。
asp.net-mvc - ASP.Net MVC DefaultModelBinder 未绑定 POST 上的属性
我正面临一个让我吸烟的非常奇怪的问题。
我有一个相当简单的场景,我有一个从 GET 控制器正确填充的强类型视图,但是当它将表单发布到控制器时,Reqeust 充满了所有正确的值和正确的键名默认模型绑定器以正确填充我的模型对象之一,并且 DMB 创建正确的对象,但它从不填充任何属性,它们都处于默认状态。
这是以前工作的,我能想到的唯一变化是我尝试了一个自定义模型绑定器(然后删除了它;仔细检查以确保我没有仍在使用它),我重构了模型以拥有一个带有一些的基类的道具。
有什么想法吗?
asp.net-mvc - asp.net mvc custom modelbinder - 如何使用关联实体执行更新
我试图了解在使用自定义模型绑定器时如何更新关联实体。
如果您有一个与类别实体有关系的产品实体,并且您在表单的下拉列表中显示产品的类别选择列表。
用户分配了一个新类别,并且该更改需要与产品一起保存。如何实现绑定以分配更新的类别?Product 的属性很简单,但是如何设置 Product.Category = category?
希望这很清楚:-)
c# - MVC 默认模型绑定到复杂列表
我在使用默认活页夹绑定到嵌套列表时遇到了一些麻烦。我正在使用 linq to sql 并具有以下数据结构
比赛 < 比赛题 < 比赛题选择
我的html如下
在我的控制器中,我尝试过
这让我参加了比赛,但没有子元素
如果没有 HTML 列表中的 Competition 前缀并单独绑定到每个集合,我会更加成功,例如
但我不能让它为 CompetitionQuestionChoices 工作,因为它必须有两个前缀,我不知道如何声明
任何帮助都将不胜感激。
nhibernate - ASP.NET MVC 2 RC 模型与 NHibernate 和下拉列表绑定
我在使用 NHibernate 进行数据访问的 ASP.NET MVC 2 RC 应用程序中的模型绑定存在问题。我们正在尝试以 Ruby on Rails 的方式构建应用程序,并拥有一个非常简单的架构,其中域实体从数据库到视图一直被使用。
该应用程序有几个域实体,可以通过以下两个类来说明:
在呈现编辑表单的视图中,有以下语句来显示下拉列表:
请忽略使用“非类型化”视图数据来保存类别集合。
接收表单 post 的操作方法类似于以下内容。请注意,TransactionFilter 属性添加了 NHibernate 事务处理,如果没有发生异常并且验证成功,则提交事务。
我的问题是 product.Category.Id 设置为在表单中选择的值,例如 Category.Id =“2”。使用默认模型绑定器会导致以下类型的 NHibernate 异常:
这很有意义,因为产品已经分配了一个类别,并且只有该现有类别的主键正在更改。应该分配另一个类别实例。
我想可以创建一个自定义 ModelBinder 来处理这个问题,但是有没有更简单的方法来完成这个工作?可以(并且应该)修改域实体来处理这个问题吗?
c# - 在 ASP.NET MVC 1.0 中使用 ModelBinder 处理无效值
首先是一些背景:
我有一个表单,我在其中回发了一些由 MVC 内置 ModelBinder 自动物化为对象的对象:
另外:我想强调的是,我们正在向 DTO (DataTransferObjects) 发布我们进一步向下映射到实体框架实体的线路图,因此我们不希望对 DTO 进行任何更改,除非可能添加属性。
问题
如果用户为“Hours”输入了一个无效值,比如“Fubar”,那么 ModelBinder 自然不会尝试设置“Hours”属性。但它默认为 0,因为它是int而不是string。
这当然给我带来了一些困难,因为现在我无法看到用户是否实际输入了 0,或者这是由无效输入引起的。
由于我使用的是自制的对象到实体(实体框架)映射器,因此我们无法将“小时”属性的足迹更改为int?. 我知道 MVC 有一些内置的验证,但我们宁愿不实现它,因为我们知道它受到了广泛的攻击,并且在 ASP.NET MVC 2.0 中有一些新的验证。
解决方案?
我需要能够向用户指出哪个字段不正确,这意味着我需要能够以某种方式捕获异常(或者可能是其他一些巧妙的解决方案?),在那里我可以做一些逻辑并发回一个新的向用户查看我澄清他们做错了什么的地方。
我目前的想法:编写自定义 ModelBinder。
你有什么建议?
asp.net-mvc - ASP.MVC 1.0 complex ViewModel not populating on Action
I'm 3 days into learning MVC for a new project and i've managed to stumble my way over the multitude of issues I've come across - mainly about something as simple as moving data to a view and back into the controller in a type-safe (and manageable) manner. This is the latest.
I've seen this reported before but nothing advised has seemed to work. I have a complex view model:
This maps to (the main Index page):
and a UserControl:
This is returned to the following method:
My problem is that when the view model is rehydrated from the View into the ViewModel, the SearchFragment elements are null. I suspect this is because the default model binder doesn't realise the HTML ItemId and Identifier elements rendered inline in the View map to the SearchFragment class. When I have two extra properties (ItemId and Identifier) in the IndexViewModel, the values are bound correctly.
Unfortunately, as far as I can tell, I must use the SearchFragment as I need this to strongly type the Search UserControl... as the control can be used anywhere it can operate under any parent view.
I really don't want to make it use "magic strings". There's too much of that going on already IMO.
I've tried prefixing the HTML with "Search." in the hope that the model binder would recognise "Search.ItemId" and match to the IndexViewModel "Search" property and the ItemId within it, but this doesn't work.
I fear I'm going to have to write my own ModelBinder to do this, but surely this must be something you can do out-of-the-box??
Failing that is there any other suggestions (or link to someone who has already done this?)
Here's hoping....
Thanks so far. It's pretty obvious this fairly basic requirement is missing from MVC :p