builder.Services.AddControllersWithViews().AddNewtonsoftJson();
#if !DEBUG //发布状态下把模板拿出来
builder.Services.AddMvc().AddRazorRuntimeCompilation();
#endif
builder.Services.AddSingleton<IFileProvider>(new PhysicalFileProvider(Directory.GetCurrentDirectory()));
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IWebHostEnvironment _webHostEnvironment;
private readonly IFileProvider _fileProvider;
public HomeController(ILogger<HomeController> logger, IFileProvider fileProvider, IWebHostEnvironment webHostEnvironment)
{
_logger = logger;
_webHostEnvironment = webHostEnvironment;
_fileProvider = fileProvider;
}
public IActionResult Index()
{
string file = ReadLayoutViewContent(_fileProvider, "_Layout");
Console.WriteLine(file);
return View("~/Views/Home/Index.cshtml");
//return View();
}
public IActionResult Privacy()
{
return View("~/Views/Home/Index.cshtml");
}
private string ReadLayoutViewContent(IFileProvider _fileProvider, string layoutViewName)
{
var viewFileInfo = _fileProvider.GetFileInfo($"Views/Shared/{layoutViewName}.cshtml");
//var viewFileInfo = _fileProvider.GetFileInfo(RuntimeEnvironment.GetRuntimeDirectory()+"/Views/Home/Index.cshtml");
if (viewFileInfo.Exists)
{
using (var streamReader = new StreamReader(viewFileInfo.CreateReadStream()))
{
return streamReader.ReadToEnd();
}
}
throw new Exception($"找不到模板页面(模板页面:{layoutViewName})!");
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}