ASP.NET MVC编辑器模板和Html.EditorFor(…) – 如何消除类型名称的歧义?

在Razor语法中使用此 HTML助手时:
@Html.EditorFor(model => model.Prop1)

…该约定是将视图呈现在视图/< CrtView | Shared> /EditorTemplates/Prop1TypeName.cshtml下.

到现在为止还挺好.请注意,如果Prop1的(限定)类型为my.org.ns.TheType,则将呈现文件TheType.cshtml.

但是如果我有一个.Prop1和.Prop2的模型,并且:

Prop1.GetType().FullName == "my.org.ns1.TheType";
Prop2.GetType().FullName == "my.org.ns2.TheType";  //same type name but different namespace

我叫这把剃刀:

@Html.EditorFor(model => model.Prop1)
@Html.EditorFor(model => model.Prop2)

…我不能得到它为不同的类型显示不同的视图.

有没有办法消除歧义?

也许有更多关于.cshtml文件的命名约定的知识?

解决方法

您可以使用 this overload来指定要使用的编辑器的名称.有了这个,你可以命名你的EditorTemplates First.cshtml和Second.cshtml,然后在你的View里这样做.
@Html.EditorFor(model => model.Prop1,"First")
@Html.EditorFor(model => model.Prop2,"Second")

但是,我建议避免在同一个项目中重复使用相同的类型名称,即使它们具有不同的命名空间.这样会导致读者阅读代码的混乱,甚至可能在路上.这是一个比不知道要使用什么模板的框架更大的问题.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....