如何在Razor中为Nullable <t>创建编辑器模板</t>

时间:2010-12-29 06:16:37

标签: asp.net-mvc-3 razor

一直试图找到使用razor为可空类型创建编辑器模板的方法。我在LinqToSQL类中具有Guid和Nullable类型的属性。当我在文件@model Guid?的第一行使用Guid.cshtml时,它总是将Guids视为Guid?类型。我想为Guid创建一个不同的编辑器模板,但文件名不接受?或者&lt;或者&gt;字符。

请帮忙。感谢。

2 个答案:

答案 0 :(得分:6)

似乎对于可空值类型,目的是编写一个处理可空和非可空类型的显示/编辑器模板。以下是Brad Wilson post的摘录:

  

在搜索类型名称时,使用没有名称空间的简单名称(即Type.Name)。此外,如果类型为Nullable,我们搜索T(因此无论您使用的是“bool”还是“Nullable”,您都将获得布尔模板)。这意味着如果您正在为值类型编写模板,则需要考虑该值是否可为空。您可以使用ModelMetadata的IsNullableValueType属性来确定该值是否可为空。我们将在下面看到内置布尔模板的示例。

因此,您可以在模板中使用@model Guid?并检查空值。

答案 1 :(得分:3)

我想我会发布这个答案:)

您是否尝试过@model Nullable<Guid>而不是@model Guid