Можно ли получить доступ к представлениям MVC, расположенным в другом проекте?

У меня много сочувствия на ваш вопрос, так как я сам в почти одинаковой позиции. Я ценю то, что говорят многие ответы, и они правильны - в подпрограмме, указывающей указатель , должен быть предоставлен действительный указатель. В моем случае почти невозможно представить, что они могли испортить указатель, но если они управляли , это будет сбой программного обеспечения MY, и ME, который получит вину: - (

Мое требование не в том, что я продолжаю после ошибки сегментации - это было бы опасно - я просто хочу сообщить, что случилось с клиентом, до завершения, чтобы они могли исправить свой код, а не обвинять меня!

Вот как я нашел это (в Windows): http://www.cplusplus.com/reference/clibrary/csignal/signal/

Чтобы дать синопсис:

#include 

using namespace std;

void terminate(int param)
/// Function executed if a segmentation fault is encountered during the cast to an instance.
{
  cerr << "\nThe function received a corrupted reference - please check the user-supplied  dll.\n";
  cerr << "Terminating program...\n";
  exit(1);
}

...
void MyFunction()
{
    void (*previous_sigsegv_function)(int);
    previous_sigsegv_function = signal(SIGSEGV, terminate);

    <-- insert risky stuff here -->

    signal(SIGSEGV, previous_sigsegv_function);
}

Теперь этот появляется , чтобы вести себя так, как я надеюсь (он печатает сообщение об ошибке, а затем завершает программу), - но если кто-то может заметить недостаток, пожалуйста, дайте мне знать!

23
задан Liam 15 June 2016 в 07:34
поделиться

1 ответ

Чтобы включить контроллеры, вам нужно изменить регистрацию маршрутов, чтобы сообщить им, где искать контроллеры:

routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}",
                namespaces: new[] {"[Namespace of the Project that contains your controllers]"},
                defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional});

для включения Просмотр вы создаете пользовательский ViewEngine:

public class CustomViewEngine: RazorViewEngine
{
    public CustomViewEngine()
    {
        MasterLocationFormats = new string[]
        {
            "~/bin/Views/{1}/{0}.cshtml",
            "~/bin/Views/{1}/{0}.vbhtml",
            "~/bin/Views/Shared/{0}.cshtml",
            "~/bin/Views/Shared/{0}.vbhtml"

        };
        ViewLocationFormats = new string[]
        {
             "~/bin/Areas/{2}/Views/{1}/{0}.cshtml",
             "~/bin/Areas/{2}/Views/{1}/{0}.vbhtml",
             "~/bin/Areas/{2}/Views/Shared/{0}.cshtml",
             "~/bin/Areas/{2}/Views/Shared/{0}.vbhtml"
        };
        .
        .
        .
    }
}
protected void Application_Start()
{
    ViewEngines.Engines.Add(new CustomViewEngine());

для Более подробную информацию смотрите в реализации RazorViewEngin по умолчанию.

Вот несколько хороших статей:

Хранение контроллеров ASP.NET MVC & amp; Представления в отдельных сборках

ASP.NET MVC: установка контроллеров в отдельную сборку

Как вызывать контроллеры во внешних сборках в ASP Приложение .NET MVC

54
ответ дан Mohsen Esmailpour 15 June 2016 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: