2

我对此问题进行了太多次搜索。但我无法找到任何解决方案来做到这一点。如何在mvc3剃须刀中创建和实现自定义数据类型

我想创建一个自定义DataType具有默认EditorTemplateDisplayTemplate用于MVC3剃刀

型号

[DataType("MyCustomDataType")] 
public MyType Property { get; set; } 
// I mean by MyType any type of data: string, int, datetime and so on 

视图 - 剃刀

@Html.DisplayFor(m => m.Property) 
//or 
@Html.EditorFor(m => m.Property) 

其实我想创建一个默认的编辑器模板和显示模板可重复使用的数据类型。

你有什么建议吗?你能给我一个有用的链接,或者如果可以的话,请举个简单的例子吗?提前致谢。

+0

'Type'是'C#'中的一个类。我认为你在这里不是那个意思,对吗? – Mohayemin 2012-07-28 16:51:26

+0

@Mohayemin你是对的。我的意思是任何类型的'Type'。我更新了这个问题。 – 2012-07-28 16:53:17

+0

那么,你的问题表明我正在寻找[this](http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html)。或者我错过了什么? – Mohayemin 2012-07-28 17:02:10

回答

2

this是自定义编辑器/显示模板的优秀教程。尽管它的语法不是很灵活,但它很容易转换。

如果你想根据Datatype属性来创建模板编辑器,你可以使用ViewData.ModelMetadata.AdditionalValues["DataTypeAttribute"]

属性值如果值是您的自定义数据类型值,你什么都想要。否则,请执行默认设置。

不知道这是不是一个好主意。但它应该工作。

+1

+1并接受。这是一个好主意。我告诉过你我有个想法,和你的一样。我执行并运行它,它工作。所以感谢对话,你的指导给了我这个想法。 – 2012-07-28 22:06:38

0

您可以创建一个新类型,即可以包含在发送到视图的模型中的Person类。即Model.Person。

通过定义一个名为Person的新EditorTemplate和DisplayTemplate。默认情况下,调用@ Html.EditorTemplateFor(x => x.Person);将寻找该类型的EditorTemplate。

看一看下面的计算器职位上"How to use asp.net mvc Editor Templates"

+0

Nop你错了。请参阅Q的评论。我的英语太糟糕了。对不起): – 2012-07-28 17:24:19