2009-08-19 3 views
1

У меня есть страница внутри моего сайта asp..net mvc. (По какой-то причине он должен быть в этом каталоге)asp.net mvc - как мне ссылаться на asp-файл внутри каталога просмотра

Просмотров/Пользователи/Календарь/admin.asp

я попытался пойти:

http://www.mySite.com/Views/Members/Calendar/admin.asp

, но это не кажется, Работа.

любые предложения о том, как иметь ссылку на эту страницу?

+0

Это опечатка? Вы имеете в виду «.aspx» или вы действительно имеете в виду «.asp»? –

+0

Я имею в виду asp. .. Я на самом деле просто сохранил этот файл asp в другом домене и поместил на него регулярные URL-ссылки, так как я не мог найти другого пути – leora

ответ

2

ASP.NET MVC блокирует доступ ко всем файлам в каталоге ~/Views.Если вы хотите получить доступ к любому файлу, кроме *.aspx изменений вашего ~/Views/web.config на следующее: (от Haacked - Security Tip: Blocking Access to ASP.NET MVC Views Using Alternative View Engines):

или удалить оба <add ..., если вы хотите получить доступ к *.aspx слишком

файлов для IIS 6:

<system.web> 
    <httpHandlers> 
     <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/> 
... 

Для IIS 7:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*.aspx" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/> 
3

View не имеет ничего общего с фактическим каталогом/адресом, в MVC, контроллер - это тот, который имеет дело с этим.

Предположим, вы начинаете с шаблоном по умолчанию MVC, адрес будет:

http://site.com/CONTROLLER/ACTION/ID 

CONTROLLER это имя класса контроллера (который под контроллером каталога), ACTION метод (который возвращают ActionResult) внутри контроллера и идентификатор - строка/int, которые передаются как параметр метода действия.

Я думаю, что вы хотели бы иметь адрес, как:

http://mysite.com/Members/Calendar/admin/ 

Это действительно не имеет значения, где вы поставите View или контроллер, но то, что вы должны смотреть на это таблица маршрутизации в глобальной. asax. Routing mvc tutorial

редактировать

В контроллере, как правило, вы собираетесь позвонить

return View(); 

В конце действия. View() на самом деле является перегруженным внутренним вызовом метода класса controlelr, который имеет 8 различных видов использования. Значение по умолчанию без параметра будет искать одно и то же имя вида для контроллера. Все, что вам нужно сделать для ссылки на другой класс представления, отличный от значения по умолчанию, использует: View(IView Class). Например, в коде может быть:

return View(new PROJECT.Members.Calendar.Admin()); 
+0

, но в этом случае в какой-то момент мне нужно указать файл asp в его каталоге. от контроллера, как мне перенаправить на это представление – leora

+0

Отредактировано. В действии контроллера вы можете явно отображать другие страницы просмотра. – xandy

0

Вы пробовали добавления IgnoreRoute метода к верхней части методы регистра маршрутов, который игнорирует этот конкретный URL? Вам нужно будет отредактировать файл web.config в папке Views, чтобы назначить этот путь обработчику ASP, потому что папка ~/Views выдает 404 по умолчанию. Затем обработчик ASP должен получить запрос, так как обработчик MVC проигнорирует его.

Смежные вопросы