2011-10-17 2 views
6

Asp.Net MVC 3をインストールしたときに表示されるデフォルトのRazor EditorとDisplayテンプレート(String.cshtml、DateTime.cshtmlなど)はどこにありますか?Asp.net MVC3のデフォルトのエディタテンプレートと表示テンプレートの場所は何ですか?

+0

エディタと表示方法の拡張機能をお探しですか? (例:@ Html.DisplayFor(x => x.Name)) –

+0

@MaxZerbini - これらの拡張機能を使用する予定です。私は、これらのテンプレートの完全なデフォルトセットを使いこなしたいと思っています。 – Ahmad

+1

これはテンプレートではありません。これらは、オブジェクトHtmlHelperの拡張メソッドです。それらを使用するか、拡張メソッドを開発することができます。 –

答えて

1

デフォルトtemplates.Razor EditorDisplayはありませんメソッドはクラスHtmlHelperの拡張メソッド。それらを使用するか、この例のような独自の拡張メソッドを開発することができます。

public static MvcHtmlString MyTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) 
     { 
      MvcHtmlString result = InputExtensions.TextBoxFor(helper, expression); 
      // do modification to result 
      return result; 
     } 
4

DotPeekまたはReflectorをお持ちの場合は、タイプDefaultDisplayTemplatesを検索するとテンプレートが見つかります。しかし、WebFormやカミソリの形式ではなく、コード形式であることに注意してください。したがって、解釈が少し難しくなります。

StringTemplate

internal static string StringTemplate(HtmlHelper html) 
{ 
    return html.Encode(html.ViewContext.ViewData.TemplateInfo.FormattedModelValue); 
} 

(私は見つけることができるデフォルトのDateTimeのテンプレートがありませんでした)

DecimalTemplate

internal static string DecimalTemplate(HtmlHelper html) 
{ 
    if (html.ViewContext.ViewData.TemplateInfo.FormattedModelValue == html.ViewContext.ViewData.ModelMetadata.Model) 
    html.ViewContext.ViewData.TemplateInfo.FormattedModelValue = (object) string.Format((IFormatProvider) CultureInfo.CurrentCulture, "{0:0.00}", new object[1] 
    { 
     html.ViewContext.ViewData.ModelMetadata.Model 
    }); 
    return DefaultDisplayTemplates.StringTemplate(html); 
} 
関連する問題