Fix #231; add `ViewBag` to `ViewComponent`
- update MVC sample to demonstrate use and that `ViewBag` is scoped - nit: add a bit of padding between border and tag cloud words
This commit is contained in:
parent
0e7dff9ca7
commit
271c849923
|
|
@ -37,6 +37,7 @@ namespace MvcSample.Web.Components
|
||||||
|
|
||||||
private string[] GetTags(int count)
|
private string[] GetTags(int count)
|
||||||
{
|
{
|
||||||
|
@ViewBag.Title = count.ToString() + " Tags:";
|
||||||
return Tags.Take(count).ToArray();
|
return Tags.Take(count).ToArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
@model string[]
|
@model string[]
|
||||||
|
|
||||||
<div style="width: 300px; height: 300px">
|
<div style="width: 300px; height: 250px; padding: 0px 10px;">
|
||||||
|
<h4>@ViewBag.Title</h4>
|
||||||
@foreach (var tag in Model)
|
@foreach (var tag in Model)
|
||||||
{
|
{
|
||||||
<span>@tag</span>
|
<span>@tag</span>
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,7 @@
|
||||||
|
|
||||||
<div style="float: right; border: 5px solid red;">
|
<div style="float: right; border: 5px solid red;">
|
||||||
@await Component.InvokeAsync("Tags", 15)
|
@await Component.InvokeAsync("Tags", 15)
|
||||||
|
<p style="padding: 0px 10px;">'@ViewBag.Title' should match page heading (still)</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ namespace Microsoft.AspNet.Mvc
|
||||||
[ViewComponent]
|
[ViewComponent]
|
||||||
public abstract class ViewComponent
|
public abstract class ViewComponent
|
||||||
{
|
{
|
||||||
|
private dynamic _viewBag;
|
||||||
|
|
||||||
public HttpContext Context
|
public HttpContext Context
|
||||||
{
|
{
|
||||||
get { return ViewContext == null ? null : ViewContext.HttpContext; }
|
get { return ViewContext == null ? null : ViewContext.HttpContext; }
|
||||||
|
|
@ -14,6 +16,19 @@ namespace Microsoft.AspNet.Mvc
|
||||||
|
|
||||||
public IViewComponentResultHelper Result { get; private set; }
|
public IViewComponentResultHelper Result { get; private set; }
|
||||||
|
|
||||||
|
public dynamic ViewBag
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_viewBag == null)
|
||||||
|
{
|
||||||
|
_viewBag = new DynamicViewData(() => ViewData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _viewBag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public ViewContext ViewContext { get; set; }
|
public ViewContext ViewContext { get; set; }
|
||||||
|
|
||||||
public ViewDataDictionary ViewData { get; set; }
|
public ViewDataDictionary ViewData { get; set; }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue