Commonize 'throw on view not found'
Deduping this code by moving it to ViewEngineResult.
This commit is contained in:
parent
fa21d1cd65
commit
6fb0d5b282
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
@ -43,13 +42,7 @@ namespace Microsoft.AspNet.Mvc
|
||||||
private async Task<IView> FindView([NotNull] IDictionary<string, object> context,[NotNull] string viewName)
|
private async Task<IView> FindView([NotNull] IDictionary<string, object> context,[NotNull] string viewName)
|
||||||
{
|
{
|
||||||
var result = await _viewEngine.FindView(context, viewName);
|
var result = await _viewEngine.FindView(context, viewName);
|
||||||
if (!result.Success)
|
result.EnsureSuccess();
|
||||||
{
|
|
||||||
var locationsText = string.Join(Environment.NewLine, result.SearchedLocations);
|
|
||||||
const string message = @"The view '{0}' was not found. The following locations were searched:{1}.";
|
|
||||||
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, message, viewName, locationsText));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result.View;
|
return result.View;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,19 +76,8 @@ namespace Microsoft.AspNet.Mvc
|
||||||
|
|
||||||
private async Task<IView> FindView([NotNull] IDictionary<string, object> context, [NotNull] string viewName)
|
private async Task<IView> FindView([NotNull] IDictionary<string, object> context, [NotNull] string viewName)
|
||||||
{
|
{
|
||||||
// Issue #161 in Jira tracks unduping this code.
|
|
||||||
var result = await _viewEngine.FindView(context, viewName);
|
var result = await _viewEngine.FindView(context, viewName);
|
||||||
if (!result.Success)
|
result.EnsureSuccess();
|
||||||
{
|
|
||||||
var locationsText = string.Join(Environment.NewLine, result.SearchedLocations);
|
|
||||||
const string message = @"The view '{0}' was not found. The following locations were searched:{1}.";
|
|
||||||
throw new InvalidOperationException(String.Format(
|
|
||||||
CultureInfo.CurrentCulture,
|
|
||||||
message,
|
|
||||||
viewName,
|
|
||||||
locationsText));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result.View;
|
return result.View;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
if (nameRepresentsPath)
|
if (nameRepresentsPath)
|
||||||
{
|
{
|
||||||
var view = await _virtualPathFactory.CreateInstance(viewName);
|
var view = await _virtualPathFactory.CreateInstance(viewName);
|
||||||
return view != null ? ViewEngineResult.Found(view) :
|
return view != null ? ViewEngineResult.Found(viewName, view) :
|
||||||
ViewEngineResult.NotFound(new[] { viewName });
|
ViewEngineResult.NotFound(viewName, new[] { viewName });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -50,20 +50,15 @@ namespace Microsoft.AspNet.Mvc.Razor
|
||||||
IView view = await _virtualPathFactory.CreateInstance(path);
|
IView view = await _virtualPathFactory.CreateInstance(path);
|
||||||
if (view != null)
|
if (view != null)
|
||||||
{
|
{
|
||||||
return ViewEngineResult.Found(view);
|
return ViewEngineResult.Found(viewName, view);
|
||||||
}
|
}
|
||||||
searchedLocations.Add(path);
|
searchedLocations.Add(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ViewEngineResult.NotFound(searchedLocations);
|
return ViewEngineResult.NotFound(viewName, searchedLocations);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<ViewEngineResult> FindComponentView(object actionContext, string viewName)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsSpecificPath(string name)
|
private static bool IsSpecificPath(string name)
|
||||||
{
|
{
|
||||||
char c = name[0];
|
char c = name[0];
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,22 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
return string.Format(CultureInfo.CurrentCulture, GetString("ViewData_WrongTModelType"), p0, p1);
|
return string.Format(CultureInfo.CurrentCulture, GetString("ViewData_WrongTModelType"), p0, p1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The view '{0}' was not found. The following locations were searched:{1}.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ViewEngine_ViewNotFound
|
||||||
|
{
|
||||||
|
get { return GetString("ViewEngine_ViewNotFound"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The view '{0}' was not found. The following locations were searched:{1}.
|
||||||
|
/// </summary>
|
||||||
|
internal static string FormatViewEngine_ViewNotFound(object p0, object p1)
|
||||||
|
{
|
||||||
|
return string.Format(CultureInfo.CurrentCulture, GetString("ViewEngine_ViewNotFound"), p0, p1);
|
||||||
|
}
|
||||||
|
|
||||||
private static string GetString(string name, params string[] formatterNames)
|
private static string GetString(string name, params string[] formatterNames)
|
||||||
{
|
{
|
||||||
var value = _resourceManager.GetString(name);
|
var value = _resourceManager.GetString(name);
|
||||||
|
|
|
||||||
|
|
@ -129,4 +129,7 @@
|
||||||
<data name="ViewData_WrongTModelType" xml:space="preserve">
|
<data name="ViewData_WrongTModelType" xml:space="preserve">
|
||||||
<value>The model item passed into the ViewData is of type '{0}', but this ViewData instance requires a model item of type '{1}'.</value>
|
<value>The model item passed into the ViewData is of type '{0}', but this ViewData instance requires a model item of type '{1}'.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ViewEngine_ViewNotFound" xml:space="preserve">
|
||||||
|
<value>The view '{0}' was not found. The following locations were searched:{1}.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
@ -13,25 +13,42 @@ namespace Microsoft.AspNet.Mvc.Rendering
|
||||||
|
|
||||||
public IView View { get; private set; }
|
public IView View { get; private set; }
|
||||||
|
|
||||||
|
public string ViewName { get; private set; }
|
||||||
|
|
||||||
public bool Success
|
public bool Success
|
||||||
{
|
{
|
||||||
get { return View != null; }
|
get { return View != null; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ViewEngineResult NotFound([NotNull] IEnumerable<string> searchedLocations)
|
public static ViewEngineResult NotFound([NotNull] string viewName, [NotNull] IEnumerable<string> searchedLocations)
|
||||||
{
|
{
|
||||||
return new ViewEngineResult
|
return new ViewEngineResult
|
||||||
{
|
{
|
||||||
SearchedLocations = searchedLocations
|
SearchedLocations = searchedLocations,
|
||||||
|
ViewName = viewName,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ViewEngineResult Found([NotNull] IView view)
|
public static ViewEngineResult Found([NotNull] string viewName, [NotNull] IView view)
|
||||||
{
|
{
|
||||||
return new ViewEngineResult
|
return new ViewEngineResult
|
||||||
{
|
{
|
||||||
View = view
|
View = view,
|
||||||
|
ViewName = viewName,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ViewEngineResult EnsureSuccess()
|
||||||
|
{
|
||||||
|
if (Success)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
var locationsText = Environment.NewLine + string.Join(Environment.NewLine, SearchedLocations);
|
||||||
|
throw new InvalidOperationException(Resources.FormatViewEngine_ViewNotFound(
|
||||||
|
ViewName,
|
||||||
|
locationsText));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue