Asp.net mvc 3 有没有办法在razor视图中解析DTO上的嵌套接口?
Razor视图引擎无法解析嵌套接口,这是一个问题。示例代码:Asp.net mvc 3 有没有办法在razor视图中解析DTO上的嵌套接口?,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,Razor视图引擎无法解析嵌套接口,这是一个问题。示例代码: public interface IDto { Guid Id {get;set;} } public interface IUserDto: IDto { string Username {get;set;} } //The view @model IUserDto //pukes on this line @Html.DisplayFor(u => u.Id) 我们应该在我们的观点上使用具体的模型吗?Ra
public interface IDto
{
Guid Id {get;set;}
}
public interface IUserDto: IDto
{
string Username {get;set;}
}
//The view
@model IUserDto
//pukes on this line
@Html.DisplayFor(u => u.Id)
我们应该在我们的观点上使用具体的模型吗?Razor view引擎是否不能在每个模型上使用多个接口?这是ASP.NET MVC 3与Microsoft的不同之处(此方案适用于ASP.NET MVC 1和2) 以下是他们的官方答案: 嗨,达林(和其他人) 这是我们在ASP.NET MVC 3中引入的经过深思熟虑的更改 这是在获得更好的支持和支持之间进行权衡的结果吗 继承模型或更好地支持实现 接口。我们最终倾向于继承的模型,这是从我们的 经验是一种更常见的方法 基本问题是,当接口由 类,该类实际上不继承其任何成员 界面。这里的关键是,因为它不继承 接口的成员,它也不会继承上的元数据 那些成员 谢谢,ASP.NET团队 现在开门见山 我们应该在我们的观点上使用具体的模型吗 没有必要。您仍然可以在主视图上使用接口,但随后可以使用具有具体类型的编辑器/显示模板。在运行时,基于视图模型的实际类型,框架将选择具有具体类型的正确模板,并解析Id属性
另一种可能是使用抽象类而不是接口(我知道beurk:-)通常是Microsoftish)你能详细解释一下你的意思吗?你说的是自定义模板吗?@DDiVita,是的,我说的是自定义编辑器/显示模板。界面太糟糕了……当我明白他们说的话时,我不确定我是否同意。@DDiVita,我也是,这就是我发布此错误报告的原因。