Поддельный субконтроллер в ASP.Net MVC, есть ли лучший способ? - PullRequest
1 голос
/ 20 июня 2011

Работая над веб-приложением ASP.Net MVC 3, я обнаружил, что нужен маршрут, подобный следующему ... http://mydomain.com/ParentPortal/Adult/Edit/4 Где Edit - команда, а 4 - идентификатор взрослого.*

Я получил следующий маршрут ...

routes.MapRoute("ParentPortal", "ParentPortal/{action}/{type}/{id}",
                New With {.controller = "ParentPortal", .action = "Index", .type = UrlParameter.Optional, .id = UrlParameter.Optional})

И следующее действие

<Authorize(Roles:="Parent")>
Public Function Adult(ByVal type As String, ByVal id As Integer?) As ActionResult
    Select Case type.ToLower
        Case "edit"
            Throw New NotImplementedException()
        Case "new"
            Throw New NotImplementedException()
        Case Else
            Throw New NotImplementedException()
    End Select

End Function

Это рекомендованный способ?

Ответы [ 2 ]

1 голос
/ 01 июля 2011

Передан для использования MVC Области. То, что вы делаете сейчас, не соответствует стандартному шаблону проектирования ASP.NET MVC, а также опирается на магические строки.

Вместо этого создайте новую область под названием «ParentPortal». Добавьте к нему контроллер 'Adult', содержащий действия Edit и New. Наконец, зарегистрируйте новую область в MVC. а именно:

  1. Создать область 'ParentPortal' с помощью щелкните правой кнопкой мыши на веб-проекте и выбрав Add-> Area ..

  2. Добавить контроллер 'AdultController' в область, щелкнув правой кнопкой мыши на и выбрав Add-> Controller

  3. Установить авторизацию и добавить редактировать / новые методы

    [Authorize(Roles="Parent")]
    public class Adult : Controller{
        public ActionResult Edit(int id){
           ..stuff..
           return View(model);
        }
    
        public ActionResult New(int id){
           ..stuff..
           return View(model);
        }
    }
    

4) Убедитесь, что Application_Start в вашем Global.asax содержит:

AreaRegistration.RegisterAllAreas();
0 голосов
/ 20 июня 2011

Вы смотрели на MVC Areas?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...