Miguel Altamirano Morales Ответов: 1

Перенаправление представления в домашней папке на другое в той же папке


Я разрабатываю приложение MVC только для учебных целей.
Я добавил новое представление в каталог /Views/Home и попытался получить доступ к нему из индексного представления, но когда я это делаю, получаю ошибку HTTP 404.

вот тег: href= "~ / Views/Home/NewPage " title="Página de Prueba" >TestPage/a>

возможно ли это сделать ?. (добавление ссылок между страницами в домашнем каталоге

Я работаю с Visual Studio 2010 C#

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

Просто чтобы проверить функциональность, я добавил еще одну страницу в корневой каталог моего приложения и добавил еще один тег (в индексном представлении), чтобы посмотреть, работает ли он, и это произошло.

Моя бирка: с href="../../ViewPage1.aspx-файл" название="Эста Эс Ла отра страница"&ГТ;Эста Эс Ла отра страница&ГТ;

1 Ответов

Рейтинг:
6

Richard Deeming

В MVC вы не ссылаетесь на Просмотры; вы ссылаетесь на действия.

Предполагая, что у вас есть NewPage действие на вашем HomeController:

public ActionResult NewPage()
{
    return View();
}
Вы можете использовать Url.Action помощник для ссылки на него:
<a href='@Url.Action("NewPage", "Home")' title="Página de Prueba">TestPage</a>


Miguel Altamirano Morales

Спасибо за ваш ответ, Ричард, у меня есть ActionResult "NewPage" в моем домашнем контроллере.
Я скопировал код url.Действие, которое вы мне прислали, и я получаю ошибку " недопустимые символы в пути маршрута"
Теперь, если вы видите мой вопрос, у меня есть еще один тег href на странице aspx, которая находится в моем корневом каталоге, и у меня нет действия в homecontroller, но он отлично работает !!!

Richard Deeming

Ссылка, которая работает, - это ссылка на страницу WebForms. WebForms предварительно датирует маршрутизацию, поэтому по умолчанию вы ссылаетесь непосредственно на страницу.

С помощью MVC вы можете ссылаться только на действие, а не на представление.

Если вы получаете ошибку, дважды проверьте свой класс RouteConfig и сгенерированный URL-адрес.

Miguel Altamirano Morales

Еще раз спасибо, Ричард. Я заметил, что сгенерированный URL-адрес :

http://localhost:57687/@Url.Action(%22TestPage%22,%20%22Home%22)

Итак, я думаю, что, возможно, символы "%22 " (они должны быть кавычками) и являются причиной ошибки. Этот адрес именно так и отображается в навигаторе. Я собираюсь попытаться заменить эти символы, используя их ascii-коды в строке, или есть причина, по которой мое приложение делает это?, какая-то конфигурация или что-то еще ?.

Пожалуйста, простите меня, если я говорю слишком наивно. Это мое первое приложение MVC. Я очень хорошо понимаю,что должен углубиться в изучение этого вопроса. Я не знаю, как делать даже то, что вы говорите мужчинам.

Richard Deeming

Это странно. Вы определенно генерируете ссылку в представлении MVC или это веб-форма?

Miguel Altamirano Morales

Два тега '< a ' расположены на странице Index. aspx в папке Views/Home. Один из них указывает на страницу aspx в корневом каталоге приложения (href= ".. / .. / ViewPage1. aspx"), и она работает нормально.

Другой пытается перейти на страницу aspx в том же каталоге Views/Home, но это не удается. Изначально говорилось, что ресурс не найден ((~/Views/Home< / TestPage.aspx) и с @url.Помощник действия он генерирует недопустимые символы. Да, это связь между взглядами.

Я собираюсь углубиться в изучение этого предмета и посмотреть, смогу ли я решить эту проблему, пока буду учиться больше. Иногда такое случается.

Большое вам спасибо, Ричард !!

Richard Deeming

Так и есть Index.aspx страница WebForms или представление MVC с использованием механизма представления ASPX?

Если это представление MVC, попробуйте:

<a href='<%: Url.Action("TestPage", "Home") %>' ...


Если это страница WebForms, попробуйте:
<a runat="server" href="~/Home/TestPage" ...

Miguel Altamirano Morales

Йеееесс !!!. Это представление MVC с использованием движка ASPX.

Я вставил код в свою разметку и работал нормально. Вы были правы с самого начала, проблема была в коде, в нем был символ"@", а не " <%".

Ну, спасибо тебе большое, Ричард, ты хороший человек. Да благословит Вас Бог, и я надеюсь снова связаться с вами.
Я приму твой ответ. Увидимся !!