Я постараюсь, чтобы этот вопрос был коротким .. (попробуйте)
Я расширил RazorViewEngine следующим образом
public class MyViewEngine:RazorViewEngine
{
public MyViewEngine(array viewPathCollection)
{
//My views are all embedded resources and here I
//set ViewLocationFormats and PartialViewLocationFormats
//so that MyVirtualPathProvider can find them inside the assembly
}
protected override bool FileExists(ControllerContext controllerContext, string virtualPath)
{
//Some Logic to check for file
}
}
Затем в Global.asax Application_Start сделал это
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new AssemblyResourceViewEngine(ViewPathCollection.ToArray()));
Теперь, когда я запускаю (все хуки на месте), я получаю эту ошибку компиляции в браузере
Ошибка компиляции
Описание: во время компиляции ресурса, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите следующие конкретные подробности ошибки и измените свой исходный код соответствующим образом.
Сообщение об ошибке компилятора: CS0103: имя 'модель' не существует в текущем контексте
Ошибка источника:
public override void Execute() {
Write(model);
WriteLiteral(" MyModelClass \r\n\r\n");
И при нажатии Показать полный источник компиляции я вижу это
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.225
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ASP {
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Helpers;
using System.Web.Security;
using System.Web.UI;
using System.Web.WebPages;
using System.Web.WebPages.Html;
using Automotive.Web.Core.Utilities;
public class _Page_bin_MyProject_DLL_Views_Home_Index_cshtml : System.Web.WebPages.WebPage {
#line hidden
public _Page_bin_MyProject_DLL_Views_Home_Index_cshtml() {
}
protected ASP.global_asax ApplicationInstance {
get {
return ((ASP.global_asax)(Context.ApplicationInstance));
}
}
public override void Execute() {
Write(model);
WriteLiteral(" MyModelClass \r\n\r\n");
WriteLiteral("Hello, this is the only thing in the view");
}
}
}
Дополнительная информация:
Я расширил VirtualPathProvider для поиска своих представлений в разных сборках.
Я делаю это в Application_start для регистрации MyVirtualPathProvider
HostingEnvironment.RegisterVirtualPathProvider(new MyVirtualPathProvider());
Если вам нужны разъяснения по этому вопросу, пожалуйста, дайте мне знать.
Любая помощь приветствуется.