Работа со ссылками asp.net mvc2 - PullRequest
       1

Работа со ссылками asp.net mvc2

0 голосов
/ 01 сентября 2010

Как сделать статическую ссылку в виде?(с использованием ASP.NET MVC2)

Я работаю над навигацией по сайту и имею в основном 4 основных направления.Они разделены на подобласти, и один контроллер следит за всей «основной областью».

Так что, в основном, после нажатия на основную область, я хотел бы отобразить список ссылок на различные подобласти.Я создал страницы, просто щелкнув правой кнопкой мыши и добавив представления, затем добавив на них список ссылок.Но как мне связать это с <%: Html.ActionLink %> ... кажется, я не могу связать напрямую с .aspx

edit :

Iпопробовал <%: Url.Content("~/Path/to.aspx") %> и это просто вывод текста ...

edit: когда я ссылаюсь прямо на него, просто используя <a href="......aspx">Go</a> и нажимаю на него, я получаю

Ресурс не найден.

Описание: HTTP 404. Ресурс, который вы ищете (или одну из его зависимостей), мог быть удален, если его имя было измененоили временно недоступен.Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Но проблема в том, что я знаю, что это определенно есть.

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Вы не можете сделать статическую ссылку на страницу просмотра, вызвав непосредственно страницу aspx представления, например

<a href="Views/Home/About.aspx">go</a>

Все файлы в папке «Виды» недоступны по ссылке непосредственно на страницу просмотра.Если вы хотите иметь статическую ссылку на страницу просмотра, вы должны создать действие для страницы. Но если ваша страница не находится в папке Views, вы можете напрямую вызвать ее по ссылке.

Вот пример иерархии

MVCProject
    Content
    Controllers
    Models
    StaticPages         <-- all pages in here can be accessible through a direct link <a href="/StaticPages/WebForm.aspx">go</a>
        WebForm.aspx
        |_WebForm.aspx.cs
    Views               <-- all pages in here cannot be accessed directly by calling the Relative path from a link <a href="/Views/Home/Index.aspx">go</a>
        Home
            Index.aspx
            About.aspx

Поэтому, если ваша ссылкаПри прямом вызове страницы внутри Views всегда возвращается 404. Если вы не создадите ActionResult для этой страницы и не вызовете его по /Controller/Action url.

1 голос
/ 01 сентября 2010

Статические ссылки на контент

Если вы ссылаетесь непосредственно на реальные файлы (не на представления MVC), вы можете просто статически записать их или использовать <%= Url.Content() %>, чтобы сделать их более осведомленными о корневой папке приложения.

Таким образом, определенная статическая связь с информацией о корневой папке приложения будет выглядеть следующим образом:

<a href="<%= Url.Content("~/some/folder/file.aspx") %>">Go there</a>

просмотров MVC

Но если вы ссылаетесь на представления, то вам следует просто предоставить имена контроллеров и действий для вашего вызова Html.ActionLink(). Он должен соответствовать вашим настройкам маршрутизации и правильному действию контроллера, которое решает, какое представление (или, другими словами, какой ASPX) показать.

Просто чтобы прояснить ситуацию : Вы не ссылаетесь на представления в MVC, потому что им запрещен прямой доступ (проверьте файл web.config в папке / Views). Вместо этого вы всегда ссылаетесь на действия контроллера, которые служат для просмотра содержимого в качестве результата их действия.

...