Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кастомная url в MVC 3

62K
30 марта 2012 года
Cyberatino
24 / / 06.03.2012
Зарегистрирован маршрут (описываю в понятиях MVC3):

Routname: Default
URL with paramateres: "{controller}/{action}/{id}"
Controller: "Company"
Action: "Profile"
id: UrlParameter.Optional


На Index.cshtml у меня есть линка "Profile", при нажатии на которую вызывается action "Profile" в контроллере "Company". Но этот action должен открывать мне не это

Company/Profile.cshtml

А вот это:

Company/Profile/Specific.cshtml

То есть, во-первых, перенаправить на другой view. А, во-вторых, сопоставить это с физической структурой каталога. То есть так, как у меня физически существуют формы в папках: в данном случае, на диске есть папка ~View/Company/Profile, в которой хранится несколько форм. Первая часть вопроса в приципе понятна: RedirectAction и бла-бла-бла. Но основное, что меня интересует, это как правильно зарегистрировать маршрут в global.asax, чтобы сервер понимал, что надо искать не в папке Company,а в папке Profile?
341
16 апреля 2012 года
Der Meister
874 / / 21.12.2007
 
Код:
public class CompanyController : Controller {
    public ActionResult Profile() {
        return View("Profile/Specific");
    }
}
Возмжно, вам просто нужен отдельный контроллер, или поделить прдставление на partials, но в любом случае [в реализации майкрософт] контроллер решает, какое представление следует выводить, а маршрут сопоставляет контроллер запросу.
На самом деле, контроллеры и представления разделяются не папочками, а пространствами имён.
62K
01 апреля 2012 года
Cyberatino
24 / / 06.03.2012
как бы всё ещё актуально.... хэлп, чтоли !!!
62K
15 апреля 2012 года
Cyberatino
24 / / 06.03.2012
и до сих пор актуально...
62K
17 апреля 2012 года
Cyberatino
24 / / 06.03.2012
Да, отдельный контроллер - был бы хорошим выходом, но в описании я не упомянул, к сожалению, что контроллер разрешен только один.
Ваше решение сработало, Der Meister, спасибо!

Хочу только уточнить на будущее: как поступать более грамотно в этом случае впредь?
Вот например у меня есть контроллер CompanyController, и он знает, что его представления находятся в папочке с названием ~/Views/Company.
Но в папочке Company, например, мы создаём папочку Profile и добавляем контроллер ProfileController. Как в таком случае MVC дать понять, что представления данного контроллера находятся во ~Views/Company/Profile ?
341
17 апреля 2012 года
Der Meister
874 / / 21.12.2007
ИМХО лучше назвать контроллер CompanyProfileController, поместить его в папку Controllers, представления - в папку ~Views\CompanyProfile, и настроить маршрут:
 
Код:
routes.MapRoute(
    null,
    "company/profile/{action}/{id}",
    new { controller = "CompanyProfile", action = "Index", id = UrlParameter.Optional }
);
Если нечем заняться, можно определить кастомное двигло и настроить в нём пути поиска представлений. :)
62K
17 апреля 2012 года
Cyberatino
24 / / 06.03.2012
Погоди, Der Meister, но ведь лабают же сайты на мвс 3 , у которых большая вложенность. Как же они добиваются такого результата? Статически дописывают пути для представлений? переписывают двигло?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог