Abrar Kazi Ответов: 2

Что контроллер вызывает сначала aspx или cshtml ?


У меня есть следующее

Контроллер / HomeController
Views/Home. cshtml и Home.aspx в одной папке

Теперь, когда этот код ниже выполняется;

public ActionResult Index()
      {
                      return View();
      }


Контроллер получает дома.aspx, который во-первых не дома.cshtml по.

По какой причине ? Почему он выбирает aspx вместо cshtml ?

Что я уже пробовал:

Я попробовал код и понял, что он сначала извлекает aspx, но я хочу знать, почему ?

2 Ответов

Рейтинг:
1

GKP1992

Это зависит от механизма просмотра.
Если вы используете Razor view engine, он выберет .cshml вместо. aspx.

Если вы используете веб-формы, то он выберет .aspx (или .ascx для частичных представлений) вместо .cshtml.


Abrar Kazi

Я использую Razor Engine, но он сначала извлекает aspx.

Рейтинг:
1

Richard Deeming

По умолчанию это выглядит так, как будто механизм просмотра "веб-форм" зарегистрирован перед механизмом просмотра Razor:
aspnetwebstack/ViewEngines. cs[^]

private static readonly ViewEngineCollection _engines = new ViewEngineCollection
{
    new WebFormViewEngine(),
    new RazorViewEngine(),
};

Если вам это не нужно aspx просмотров, вы можете удалить WebFormViewEngine в Application_Start событие:
var webFormEngine = ViewEngines.Engines.OfType<WebFormViewEngine>().FirstOrDefault();
if (webFormEngine != null) ViewEngines.Engines.Remove(webFormEngine);

Если вы хотите, чтобы оба механизма просмотра имели приоритет, но хотите, чтобы представления Razor имели приоритет, вы можете изменить порядок:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
ViewEngines.Engines.Add(new WebFormViewEngine());