В ASP.NET MVC откуда контроллер знает, какое представление вызывать? - PullRequest
0 голосов
/ 24 октября 2019

Это может звучать как глупый вопрос, я довольно опытный программист, но я новичок в .NET и MVC.

В классе, который я брал, у нас есть класс контроллера (Homecontroller.cs) Я понимаю, что вызов метода Return View () в методе ActionResult Index () приведет к тому, что .NET будет искать «домашнее» представление с файлом Index.cshtml. Однако в этом примере мы возвращаем View (автомобили), где car является экземпляром типа Car. Таким образом, код возвращается в Views / Home / index.html, даже если нет представления "cars". Но этот класс является моделью типа Car. Итак, если у вас есть тип объекта, возвращаемый в «обратном представлении», выполняет ли ASP.NET поиск файлов .chstml в поисках этого типа модели? Или он все еще ищет Home / Index.html, потому что обратный просмотр вызывается из метода index. Вкратце, как ASP.NET узнает в приведенном ниже коде, что нужно перейти в Views / Home / Index.cshtml? Я вставлю соответствующий код ниже:

Controllers / HomeController.cs:

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        var cars = HelloMVC.Models.HelloModel.GetCars();

        return View(cars);
    }
}

Views / Home / Index.cshtml:

@model List<HelloMVC.Models.HelloModel.Car>
@{
    ViewBag.Title = "Index";
}

@foreach (var car in Model)
{
    <p>@car.ID - @car.Make - @car.Model</p>
}

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

ASP.NET MVC использует процесс, называемый «обнаружением представления», чтобы сопоставить представления с действиями контроллера, как описано здесь:

https://asp.mvc -tutorial.com / views / view-discovery-connection-controller-view /

Если вы не передадите конкретное имя представления для поиска, оно будет искать представление, соответствующее имени вашего действия контроллера. Так что в этом случае он будет искать Index.cshtml.

Один вариант метода View () принимает один объект (модель) в качестве параметра. В вашем примере в качестве модели передается переменная «cars».

Здесь описан метод View (): https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.controller.view?view=aspnet-mvc-5.2

0 голосов
/ 25 октября 2019

Места поиска:

~/Views/{ControllerName}/{ActionName}.cshtml
~/Views/Shared/{ActionName}.cshtml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...