Skip to content
This repository was archived by the owner on Dec 14, 2018. It is now read-only.

Commit 42a508d

Browse files
committed
Add IHtmlGenerator to DI
- enable MVC tag helpers in TagHelperSample.Web - also fix a couple of issues in TagHelperSample.Web
1 parent 7a9fd95 commit 42a508d

File tree

6 files changed

+42
-32
lines changed

6 files changed

+42
-32
lines changed

samples/TagHelperSample.Web/Startup.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class Startup
88
{
99
public void Configure(IApplicationBuilder app)
1010
{
11-
app.UseServices(services => services.AddMvc());
11+
app.UsePerRequestServices(services => services.AddMvc());
1212
app.UseMvc();
1313
}
1414
}

samples/TagHelperSample.Web/Views/Home/Create.cshtml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
@using TagHelperSample.Web.Models
33
@model User
4+
@addtaghelper "Microsoft.AspNet.Mvc.TagHelpers"
45

56
<h2>Create</h2>
67

samples/TagHelperSample.Web/Views/Home/Edit.cshtml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
@using TagHelperSample.Web.Models
33
@model User
4+
@addtaghelper "Microsoft.AspNet.Mvc.TagHelpers"
45

56
<h2>Edit</h2>
67

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
@using TagHelperSample.Web.Models
33
@model IEnumerable<User>
4+
@addtaghelper "Microsoft.AspNet.Mvc.TagHelpers"
45

56
<h2>Index</h2>
67
<p>
@@ -10,26 +11,28 @@
1011
@if (Model != null && Model.Count() != 0)
1112
{
1213
<div class="form-horizontal">
13-
@foreach (var item in Model)
14+
@for (var index = 0; index < Model.Count(); ++index)
1415
{
16+
@*
1517
<div class="form-group">
16-
<label for="@item.Name" />
17-
<input type="text" for="@item.Name" disabled="disabled" readonly="readonly" />
18+
<label for="[index].Name" />
19+
<input type="text" for="[index].Name" disabled="disabled" readonly="readonly" />
1820
</div>
1921
<div class="form-group">
20-
<label for="@item.DateOfBirth" />
21-
<input type="date" for="@item.DateOfBirth" disabled="disabled" readonly="readonly" />
22+
<label for="[index].DateOfBirth" />
23+
<input type="date" for="[index].DateOfBirth" disabled="disabled" readonly="readonly" />
2224
</div>
2325
<div class="form-group">
24-
<label for="@item.YearsEmployeed" />
25-
<input type="number" for="@item.YearsEmployeed" disabled="disabled" readonly="readonly" />
26+
<label for="[index].YearsEmployeed" />
27+
<input type="number" for="[index].YearsEmployeed" disabled="disabled" readonly="readonly" />
2628
</div>
2729
<div class="form-group">
28-
<label for="@item.Blurb" />
29-
<textarea rows="4" for="@item.Blurb" disabled="disabled" readonly="readonly" />
30+
<label for="[index].Blurb" />
31+
<textarea rows="4" for="[index].Blurb" disabled="disabled" readonly="readonly" />
3032
</div>
3133
32-
<a action="Edit" controller="Home" route="MyRouteName" route-id="@item.Id">Edit</a>
34+
<a action="Edit" controller="Home" route="MyRouteName" route-id="[index].Id">Edit</a>
35+
*@
3336
}
3437
</div>
3538
}
Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
{
2-
"compilationOptions": {
3-
"warningsAsErrors": true
2+
"compilationOptions": {
3+
"warningsAsErrors": true
4+
},
5+
"dependencies": {
6+
"Microsoft.AspNet.Mvc": "6.0.0-*",
7+
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
8+
"Microsoft.AspNet.Server.WebListener": "1.0.0-*",
9+
"Microsoft.Framework.ConfigurationModel": "1.0.0-*",
10+
"Microsoft.AspNet.Mvc.TagHelpers": ""
11+
},
12+
"commands": {
13+
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001"
14+
},
15+
"frameworks": {
16+
"aspnet50": {
17+
"dependencies": {
18+
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-*"
19+
}
420
},
5-
"dependencies": {
6-
"Microsoft.AspNet.Mvc": "6.0.0-*",
7-
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
8-
"Microsoft.AspNet.Server.WebListener": "1.0.0-*",
9-
"Microsoft.Framework.ConfigurationModel": "1.0.0-*"
10-
},
11-
"commands": {
12-
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001"
13-
},
14-
"frameworks": {
15-
"aspnet50": {
16-
"dependencies": {
17-
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-*"
18-
}
19-
},
20-
"aspnetcore50": {
21-
"dependencies": { }
22-
}
21+
"aspnetcore50": {
22+
"dependencies": {}
2323
}
24-
}
24+
}
25+
}

src/Microsoft.AspNet.Mvc/MvcServices.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ public static IEnumerable<IServiceDescriptor> GetDefaultServices(IConfiguration
134134
yield return describe.Transient<IHtmlHelper, HtmlHelper>();
135135
yield return describe.Transient(typeof(IHtmlHelper<>), typeof(HtmlHelper<>));
136136

137+
// DefaultHtmlGenerator is pretty much stateless but depends on Scoped services such as `IUrlHelper` and
138+
// IActionBindingContextProvider. Therefore it too is scoped.
139+
yield return describe.Transient<IHtmlGenerator, DefaultHtmlGenerator>();
140+
137141
yield return describe.Transient<MvcMarkerService, MvcMarkerService>();
138142
}
139143
}

0 commit comments

Comments
 (0)