EditorTemplates在类库中

时间:2010-11-25 08:40:26

标签: asp.net-mvc

在ASP.NET-MVC2项目中,我构建了一些驻留在Views \ Shared \ EditorTemplates和DisplayTemplates文件夹中的用户控件。

我想把这个模板拉成一个类库,为了让它们可以重用,我该怎么做!

我不知道这是否有所帮助,但更多细节;一些模板以类型(字符串,Int32等)命名,一些模板名称类似于RemoteCombo,并在UIHint中使用模板提示指定。

1 个答案:

答案 0 :(得分:1)

不幸的是,您不能只创建一个库并将ascx文件放在那里。您必须创建模板的“仅代码”版本,以呈现适当的html。

Microsoft必须这样做才能在System.Web.Mvc.dll

中提供默认模板

有关模板的更多信息可以在 this 博客上找到 - 这是关于MVC模板的一系列精彩帖子。 (看看'内置显示模板'部分)

这是Decimals的默认编辑模板(来自System.Web.Mvc.dll)

internal static string DecimalTemplate(HtmlHelper html)
{
    if (html.ViewContext.ViewData.TemplateInfo.FormattedModelValue == html.ViewContext.ViewData.ModelMetadata.Model)
    {
        html.ViewContext.ViewData.TemplateInfo.FormattedModelValue = string.Format(CultureInfo.CurrentCulture, "{0:0.00}", new object[] { html.ViewContext.ViewData.ModelMetadata.Model });
    }
    return StringTemplate(html);
}

所有默认模板都可以在System.Web.Mvc.Html命名空间中的Reflector中看到。