Как указать имя представления в действии MVC? - PullRequest
0 голосов
/ 14 мая 2018

Я изучаю Asp MVC.Я занимаюсь программами WPF MVVM уже два года, но мне также нужно выучить ASP, который, насколько я знаю, является распространенным языком веб-разработки в моей стране.И у меня также есть знания в C #, так что я думаю, что настройка не будет очень сложной, но я уже сталкиваюсь с множеством проблем в работе моего сайта.Я пытался читать об ASP и MVC, но я учусь на своих вещах и на своей ошибке, чем читаю.Поэтому я решил попробовать.

Я создал проект EMPTY MVC с использованием Visual Studio Community Edition 2017

Я уже создал страницу макета, а также первый контроллер и первый вид и его полностьюработает нормально.

Это скриншот

enter image description here

Затем я создаю второй контроллер.Затем возникает проблема.

Я создал новый контроллер с именем NewPostController и ADD View для него, например:

enter image description here

Но он создает другую папку с именем View, и внутри него это представление, которое он создал

enter image description here

Я не хочу, чтобы это организовывалось таким образом.

Итак, я перетащил NewPost.cshtml в папку администратора.Запустите приложение, затем я получил сообщение об ошибке:

The resource cannot be found.
Requested URL: /Admin/NewPost

Я выполнил поиск решения, но не могу решить проблему

Я попытался указать имя представления

        public ActionResult NewPost()
        {
            return View("~/Admin/NewPost");
        }

Большая часть решения, которое я прочитал, - указать имя вида.Но я не могу заставить это работать.Что я пропустил?Или не понял?Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

MVC имеет своего рода соглашение об именах, где, если ваш контроллер называется FooController, тогда ваши представления должны храниться в папке с именем Foo.

Внутри этого контроллера у вас будет

public ActionResult <name of view>

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

Так что, если у вас есть представление в папке Foo и имя этого файла cshtml - Hello, то внутри FooController вы получаете

public ActionResult Hello(//parameter here){
    //body here
}

Надеюсь, вы понимаете мое объяснение.

Также, чтобы ответить на ваш вопрос.Я предполагаю, что вы хотите NewPost.cshtml как часть папки администратора.Просто добавьте

public ActionResult NewPost()

к вашему административному контроллеру, и тогда вы можете использовать

localhost/admin/NewPost()

Если я что-то пропустил или любую ошибку, пожалуйста, прокомментируйте, как он ответил на это немного спеша

0 голосов
/ 14 мая 2018

Просто переместите ваше действие NewPost на AdminController следующим образом:

public class AdminController : Controller
{
    public ActionResult Dashboard()
    {
        return View();
    }

    // Here you go
    public ActionResult NewPost()
    {
        return View();
    }
}

Это структура MVC по умолчанию, если вы хотите, чтобы оба вида Dashboard и NewPost были в Admin папка

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