Added the default constructor to ViewContext
This commit is contained in:
parent
f152ea7004
commit
3ea7daabfe
|
|
@ -14,7 +14,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
public class ActionContext
|
public class ActionContext
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a empty <see cref="ActionContext"/>.
|
/// Creates an empty <see cref="ActionContext"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// The default constructor is provided for unit test purposes only.
|
/// The default constructor is provided for unit test purposes only.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
using Microsoft.AspNet.Http;
|
using Microsoft.AspNet.Http;
|
||||||
using Microsoft.AspNet.Mvc.ModelBinding;
|
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||||
|
|
@ -17,6 +18,8 @@ namespace Microsoft.AspNet.Mvc
|
||||||
public abstract class ViewComponent
|
public abstract class ViewComponent
|
||||||
{
|
{
|
||||||
private dynamic _viewBag;
|
private dynamic _viewBag;
|
||||||
|
private ViewContext _viewContext;
|
||||||
|
private ViewDataDictionary _viewData;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the <see cref="HttpContext"/>.
|
/// Gets the <see cref="HttpContext"/>.
|
||||||
|
|
@ -99,13 +102,49 @@ namespace Microsoft.AspNet.Mvc
|
||||||
/// Gets or sets the <see cref="ViewContext"/>.
|
/// Gets or sets the <see cref="ViewContext"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Activate]
|
[Activate]
|
||||||
public ViewContext ViewContext { get; set; }
|
public ViewContext ViewContext
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_viewContext == null)
|
||||||
|
{
|
||||||
|
// This should run only for the ViewComponent unit test scenarios
|
||||||
|
_viewContext = new ViewContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
return _viewContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
[param: NotNull]
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_viewContext = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the <see cref="ViewDataDictionary"/>.
|
/// Gets or sets the <see cref="ViewDataDictionary"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Activate]
|
[Activate]
|
||||||
public ViewDataDictionary ViewData { get; set; }
|
public ViewDataDictionary ViewData
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_viewData == null)
|
||||||
|
{
|
||||||
|
// This should run only for the ViewComponent unit test scenarios
|
||||||
|
_viewData = new ViewDataDictionary(ViewContext.ViewData);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _viewData;
|
||||||
|
}
|
||||||
|
|
||||||
|
[param: NotNull]
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_viewData = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the <see cref="ICompositeViewEngine"/>.
|
/// Gets or sets the <see cref="ICompositeViewEngine"/>.
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using Microsoft.AspNet.Mvc.ModelBinding;
|
||||||
using Microsoft.AspNet.Mvc.Rendering;
|
using Microsoft.AspNet.Mvc.Rendering;
|
||||||
using Microsoft.Framework.Internal;
|
using Microsoft.Framework.Internal;
|
||||||
|
|
||||||
|
|
@ -18,6 +19,17 @@ namespace Microsoft.AspNet.Mvc
|
||||||
private FormContext _formContext;
|
private FormContext _formContext;
|
||||||
private DynamicViewData _viewBag;
|
private DynamicViewData _viewBag;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates an empty <see cref="ViewContext"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// The default constructor is provided for unit test purposes only.
|
||||||
|
/// </remarks>
|
||||||
|
public ViewContext()
|
||||||
|
{
|
||||||
|
ViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), ModelState);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of <see cref="ViewContext"/>.
|
/// Initializes a new instance of <see cref="ViewContext"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,24 @@ namespace Microsoft.AspNet.Mvc
|
||||||
Assert.Equal("CustomViewName", actualResult.ViewName);
|
Assert.Equal("CustomViewName", actualResult.ViewName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ViewComponent_ViewContext_ViewData_ReturnsDefaultInstanceIfNull()
|
||||||
|
{
|
||||||
|
// Arrange && Act
|
||||||
|
var viewComponent = new TestViewComponent();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
// ViewComponent.ViewContext returns the default instance for the unit test scenarios
|
||||||
|
Assert.NotNull(viewComponent.ViewContext);
|
||||||
|
Assert.NotNull(viewComponent.ViewContext.ViewData);
|
||||||
|
|
||||||
|
// ViewComponent.ViewData returns the default instance for the unit test scenarios
|
||||||
|
Assert.Empty(viewComponent.ViewContext.ViewData);
|
||||||
|
Assert.NotNull(viewComponent.ViewData);
|
||||||
|
Assert.Empty(viewComponent.ViewData);
|
||||||
|
Assert.NotSame(viewComponent.ViewData, viewComponent.ViewContext.ViewData);
|
||||||
|
}
|
||||||
|
|
||||||
private class TestViewComponent : ViewComponent
|
private class TestViewComponent : ViewComponent
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue