public ViewLocationResult LocateView(string viewName, IEnumerable<string> supportedViewEngineExtensions)
{
string prefix = GetViewPrefix(viewName);
string processedViewName = GetViewName(viewName);
var viewFolder = GetViewFolder(prefix, viewName);
if (string.IsNullOrEmpty(viewFolder))
{
return null;
}
var filesInViewFolder =
Directory.GetFiles(viewFolder);
var viewsFiles =
from file in filesInViewFolder
from extension in supportedViewEngineExtensions
where Path.GetFileName(file).Equals(string.Concat(processedViewName, ".", extension), StringComparison.OrdinalIgnoreCase)
select new
{
file,
extension
};
var selectedView =
viewsFiles.FirstOrDefault();
var fileStream = new FileStream(selectedView.file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
return new ViewLocationResult(
selectedView.file,
selectedView.extension,
new StreamReader(fileStream)
);
}