2010-03-29 5 views
0

Я очень смущен. В проекте MVC 1.0 должен быть установлен вид и соответствующий контроллер. В настоящее время в приложении по умолчанию у нас есть страница About.aspx под домашней папкой, и все действия контроллера обрабатываются в HomeController. Этот контроллер смешивает действие «Главная» и «О действии». Это делает вещи грязными. Мне нравится иметь четкое разделение моего контроллера. Как и в случае с одним контроллером и HomeCotroller. Для этого я создал другую папку «О себе» в папке просмотра и поместил в нее Aboput.aspx, иначе мы получим ошибку ниже. Как я могу это достичь? Мне нравится иметь точную структуру папок, как в представлении, так же, как в Cotroller.Структура файла MVC View и Controller ASP.Net

The view 'About' or its master could not be found. The following locations were searched: 
~/Views/About/About.aspx 
~/Views/About/About.ascx 
~/Views/Shared/About.aspx 
~/Views/Shared/About.ascx 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: The view 'About' or its master could not be found. The following locations were searched: 
~/Views/About/About.aspx 
~/Views/About/About.ascx 
~/Views/Shared/About.aspx 
~/Views/Shared/About.ascx 

Я хотел бы иметь папки, такие как \ IEW \ About.aspx и Cotroller \ AboutController.cs или \ View \ Info \ About.aspx и \ Controller \ Info \ AboutController.cs.

Это сделает мой проект и код очень чистым и удобным для обслуживания. Заранее спасибо за помощь

ответ

2

Я думаю, что они хотели бы вы иметь

Просмотров/О/index.aspx

который/Views/AboutController Index() будет указывать на

Пример маршрутизации :

в Global.asax:

protected void Application_Start() 
{ 
    MyRoutes.RegisterRoutes(RouteTable.Routes);   
} 

то в классе MyRoutes:

public class MyRoutes 
{ 
    internal static void RegisterRoutes(RouteCollection routes) 
    { 
     // add routes 
    } 
} 
+0

Вы всегда можете добавить маршрут, который указывает «/About.aspx» на «/Views/Home/About.aspx» – hunter

+0

Да, я могу это сделать, но в случае больших проектов мой global.asx.cs файл будет очень большой. Любая лучшая альтернатива? – Jit

+0

Как только вы придумаете все шаблоны, вам понадобится не так уж плохо. Кроме того, вам не нужно вносить все это в global.asax. Я привел пример использования другого класса для регистрации ваших маршрутов. – hunter

1

Вы, вероятно, следует рассмотреть основные учебники для рамки ASP.Net MVC. Он работает в нескольких соглашениях - и одним из самых больших соглашений является структура имен файлов и папок.

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

+0

На самом деле я думаю о большой проектной точке зрения. Предположим, у меня есть папка Sales in view, а затем у меня есть 10 файлов .aspx (One.aspx, Two.aspx ... Ten.aspx) в папке продаж. В этом случае я должен реализовать всю логику контроллера в файле SalesController.cs. Подумайте, как это неправильно? Если он дает такую ​​возможность, как OneController.cs, TwoController.cs, тогда будет намного лучше четкое разделение логики. Любая идея решить эту проблему? – Jit

+0

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

+0

Womp, Если я согласен с вами, то вы говорите мне, что я должен разместить всю логику контроллера вида в одном файле контроллера? Как я могу сказать, что мой контроллер создает представление? На самом деле один контроллер создает несколько представлений (связанных логически, но физически раздельно, я могу быть не один раз, но я содержал код для управления несколькими видами). Я не мог понять, как это нарушает концепцию среды MVC?Было разработано множество приложений до выпуска MVC с помощью одного контроллера Controller и просмотра карты. Можете ли вы объяснить мне, как обосновать шаблон MVC здесь? – Jit

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