From 5dbd006165b22fd7ba1e13f4561bcfbd5752c608 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Wed, 2 Apr 2014 12:55:34 -0700 Subject: [PATCH] Add sample for Display Html Helper. Showcased a lot of the core pieces of Display in the sample. Some pieces are still missing such as DataType handling. The infrastructure is there to handle it in the TemplateRenderer but the model metadata providers do not construct the metadata with the data types. --- samples/MvcSample.Web/HomeController.cs | 11 +++- samples/MvcSample.Web/Models/User.cs | 3 + .../Shared/DisplayTemplates/Boolean.cshtml | 20 +++++++ .../Shared/DisplayTemplates/Decimal.cshtml | 11 ++++ .../Shared/DisplayTemplates/Int32.cshtml | 1 + .../Shared/DisplayTemplates/String.cshtml | 1 + .../MvcSample.Web/Views/Shared/MyView.cshtml | 55 ++++++++++++++++++- 7 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 samples/MvcSample.Web/Views/Shared/DisplayTemplates/Boolean.cshtml create mode 100644 samples/MvcSample.Web/Views/Shared/DisplayTemplates/Decimal.cshtml create mode 100644 samples/MvcSample.Web/Views/Shared/DisplayTemplates/Int32.cshtml create mode 100644 samples/MvcSample.Web/Views/Shared/DisplayTemplates/String.cshtml diff --git a/samples/MvcSample.Web/HomeController.cs b/samples/MvcSample.Web/HomeController.cs index ef1d3bcaec..8c3cbfa0ef 100644 --- a/samples/MvcSample.Web/HomeController.cs +++ b/samples/MvcSample.Web/HomeController.cs @@ -75,7 +75,16 @@ namespace MvcSample.Web User user = new User() { Name = "My name", - Address = "My address" + Address = "My address", + Alive = true, + Age = 13, + GPA = 13.37M, + Dependent = new User() + { + Name = "Dependents name", + Address = "Dependents address", + Alive = false, + }, }; return user; diff --git a/samples/MvcSample.Web/Models/User.cs b/samples/MvcSample.Web/Models/User.cs index 9869e92d13..825de781e9 100644 --- a/samples/MvcSample.Web/Models/User.cs +++ b/samples/MvcSample.Web/Models/User.cs @@ -9,5 +9,8 @@ namespace MvcSample.Web.Models public string Name { get; set; } public string Address { get; set; } public int Age { get; set; } + public decimal GPA { get; set; } + public User Dependent { get; set; } + public bool Alive { get; set; } } } \ No newline at end of file diff --git a/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Boolean.cshtml b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Boolean.cshtml new file mode 100644 index 0000000000..2d92a8feb2 --- /dev/null +++ b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Boolean.cshtml @@ -0,0 +1,20 @@ +@functions { + private bool? Value { + get { + if (ViewData.Model == null) { + return null; + } + return Convert.ToBoolean(ViewData.Model, System.Globalization.CultureInfo.InvariantCulture); + } + } +} + +@if (ViewData.ModelMetadata.IsNullableValueType) { + +} else { + +} \ No newline at end of file diff --git a/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Decimal.cshtml b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Decimal.cshtml new file mode 100644 index 0000000000..adc4456610 --- /dev/null +++ b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Decimal.cshtml @@ -0,0 +1,11 @@ +@functions { + private object FormattedValue { + get { + if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model) { + return String.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:0.00}", ViewData.ModelMetadata.Model); + } + return ViewData.TemplateInfo.FormattedModelValue; + } + } +} +@Html.Encode(FormattedValue) \ No newline at end of file diff --git a/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Int32.cshtml b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Int32.cshtml new file mode 100644 index 0000000000..54ac8e0909 --- /dev/null +++ b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/Int32.cshtml @@ -0,0 +1 @@ +@ViewData.TemplateInfo.FormattedModelValue \ No newline at end of file diff --git a/samples/MvcSample.Web/Views/Shared/DisplayTemplates/String.cshtml b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/String.cshtml new file mode 100644 index 0000000000..ae2dc6dec1 --- /dev/null +++ b/samples/MvcSample.Web/Views/Shared/DisplayTemplates/String.cshtml @@ -0,0 +1 @@ +@Html.Encode(ViewData.TemplateInfo.FormattedModelValue) \ No newline at end of file diff --git a/samples/MvcSample.Web/Views/Shared/MyView.cshtml b/samples/MvcSample.Web/Views/Shared/MyView.cshtml index 655d8d89ab..30c5cecede 100644 --- a/samples/MvcSample.Web/Views/Shared/MyView.cshtml +++ b/samples/MvcSample.Web/Views/Shared/MyView.cshtml @@ -204,7 +204,60 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + '@Html.Display("Name")' +
+ + + '@Html.Display("Dependent.Name")' +
+ + + '@Html.Display("Alive")' +
+ + + '@Html.Display("Dependent.Alive")' +
+ + + '@Html.Display("Age")' +
+ + + '@Html.Display("GPA")' +
+
+
@await Component.InvokeAsync("Tags", 15)
- + \ No newline at end of file