gpt4 book ai didi

c# - 模型绑定(bind)找不到继承的接口(interface)属性

转载 作者:太空狗 更新时间:2023-10-29 20:18:00 25 4
gpt4 key购买 nike

我被这个问题难住了,我不确定是我对 MVC 框架、.NET 框架还是什么缺乏了解。但是,这里将不胜感激来自任何角落的一些解释。

我想做的是:使用 ASP.NET MVC3 模型绑定(bind)在 View 中呈现 HTML 控件。具体来说,我试图绑定(bind)到一个接口(interface)而不是一个具体的类。

错误:ArgumentException“找不到属性 [blah]。”在页面加载期间抛出。

代码:

Interface IFoundation
{
int Id { get; set; }
}

Interface IChild: IFoundation
{
string Name { get; set; }
}

Class Concrete: IChild
{
int Id { get; set; }
string Name { get; set; }
}

View :

@model IChild
@Html.EditorFor(x => x.Id)

当我尝试加载 View 时,对 EditorFor() 的调用抛出一个 ArgumentException,指出找不到 Id 属性。但是,如果我改为绑定(bind)到 Concrete 类,则绑定(bind)工作正常。

那么有人知道为什么 EditorFor() 无法解析从基接口(interface)继承的属性吗?

最佳答案

在基类/抽象类和具体类中,存在属性、方法等。另一方面,接口(interface)是实现的。 CLR 强加的规则。

请参阅本文解释 ModelBinding 和这种差异的关系(类 x 接口(interface))。

http://bradwilson.typepad.com/blog/2011/08/interface-attributes-class-attributes.html

我想这是你的答案。

关于c# - 模型绑定(bind)找不到继承的接口(interface)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7968304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com