URL-адреса ASP.NET Core 2.0 - PullRequest
       8

URL-адреса ASP.NET Core 2.0

0 голосов
/ 08 ноября 2018

Я занимаюсь разработкой большого веб-приложения ASP.NET Core 2, но все еще путаюсь с URL-адресами.

При первом изучении я думал, что URL взяли имя View, но обнаружил, что они происходят из метода Controller.

Вот пример, чтобы передать мою проблему:

У меня есть метод контроллера с именем Daysheet , который возвращает вид и модель с одинаковым именем.

В представлении Dayheet я вызываю различные методы контроллера из Javascript для выполнения определенных действий. Один из них называется AssignStaff , который принимает два целочисленных параметра.

В методе AssignStaff я снова возвращаю представление Dayheet с моделью, но теперь мой URL-адрес "AssignStaff"!

Я не могу просто выполнить перенаправление, потому что вся модель Daysheet не передается методу AssignStaff.

У меня много таких ситуаций, когда после вызова действия я получаю другой URL, который мне не нужен.

UPDATE / EDIT

Спасибо за помощь и извинения, если мое объяснение сбивает с толку. У меня просто есть представление под названием Daysheet , в котором используется модель. Я хочу вызывать различные методы контроллера для выполнения различных действий, но я хочу остаться в представлении «Дневной лист» / URL.

Как уже упоминалось, я не могу просто перенаправить, потому что в методе действия у меня больше нет всей модели из представления Daysheet . Кроме того, если я перенаправляю, я не могу передать всю модель, потому что это вызывает ошибку, говоря, что заголовок слишком длинный. Я думаю, что мой единственный выбор - использовать ajax для действий, чтобы URL не менялся.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

URL-адреса, на которые ваше приложение отвечает, называются «маршруты», и они либо создаются по соглашению, либо явно. Конечно, по умолчанию используется соглашение, которое представляет собой URL в виде /{controller=Home}/{action=Index}. Index является действием по умолчанию, если эта часть маршрута пропущена, поэтому запрос к /foo будет по соглашению отображаться на FooController.Index. HomeController является контроллером по умолчанию, поэтому пустой путь (например, http://sample.com) будет по соглашению вызывать HomeController.Index.

Razor Pages имеют свои соглашения. Они в некоторой степени соответствуют файловой системе, но исключают часть пути Pages. Таким образом, страница Razor, такая как Pages/Foo/MyRazorPage.cshtml, будет загружаться под /Foo/MyRazorPage.

Там есть атрибут Route, который позволяет вам указать полностью собственный маршрут. Этот атрибут может быть применен к классу контроллера и отдельным действиям в классе. Например:

[Route("foo")]
public class MyAwesomeController
{
    [Route("bar")]
    public IActionResult MyAwesomeAction()
    {
        return View();
    }
}

При этом запрос к /foo/bar фактически вызовет MyAwesomeController.MyAwesomeAction.

0 голосов
/ 08 ноября 2018

Когда вы просто делаете «Return View» («») в действии контроллера, URL-адрес будет именем используемого вами действия.

Если вы хотите перенаправить на какое-то конкретное действие, это поможет убедиться, что URL соответствует тому, где вы находитесь. Возможно, вы захотите узнать больше об этом здесь .

Для этого используйте:

RedirectToAction()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...